@uniswap/universal-router-sdk 1.1.1 → 1.2.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/dist/entities/protocols/looksRare.d.ts +1 -2
- package/dist/entities/protocols/uniswap.d.ts +34 -1
- package/dist/entities/protocols/x2y2.d.ts +2 -11
- package/dist/index.d.ts +0 -1
- package/dist/index.js +2 -2
- package/dist/{universal-router-sdk.cjs.development.js → narwhal-sdk.cjs.development.js} +2488 -241
- package/dist/narwhal-sdk.cjs.development.js.map +1 -0
- package/dist/narwhal-sdk.cjs.production.min.js +2 -0
- package/dist/narwhal-sdk.cjs.production.min.js.map +1 -0
- package/dist/{universal-router-sdk.esm.js → narwhal-sdk.esm.js} +2489 -241
- package/dist/narwhal-sdk.esm.js.map +1 -0
- package/dist/swapRouter.d.ts +3 -8
- package/dist/utils/constants.d.ts +2 -4
- package/dist/utils/expandTo18Decimals.d.ts +0 -2
- package/dist/utils/routerCommands.d.ts +25 -25
- package/package.json +3 -3
- package/dist/universal-router-sdk.cjs.development.js.map +0 -1
- package/dist/universal-router-sdk.cjs.production.min.js +0 -2
- package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
- package/dist/universal-router-sdk.esm.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narwhal-sdk.cjs.development.js","sources":["../src/utils/routerCommands.ts","../src/utils/constants.ts","../src/entities/protocols/uniswap.ts","../src/utils/permit2.ts","../src/swapRouter.ts","../src/entities/NFTTrade.ts","../src/entities/protocols/cryptopunk.ts","../src/entities/protocols/foundation.ts","../src/entities/protocols/looksRare.ts","../src/entities/protocols/nft20.ts","../src/entities/protocols/nftx.ts","../src/entities/protocols/seaport.ts","../src/entities/protocols/sudoswap.ts","../src/entities/protocols/x2y2.ts"],"sourcesContent":["import { defaultAbiCoder } from 'ethers/lib/utils'\n\n/**\n * CommandTypes\n * @description Flags that modify a command's execution\n * @enum {number}\n */\nexport enum CommandType {\n PERMIT = 0x00,\n TRANSFER = 0x01,\n V3_SWAP_EXACT_IN = 0x02,\n V3_SWAP_EXACT_OUT = 0x03,\n V2_SWAP_EXACT_IN = 0x04,\n V2_SWAP_EXACT_OUT = 0x05,\n SEAPORT = 0x06,\n WRAP_ETH = 0x07,\n UNWRAP_WETH = 0x08,\n SWEEP = 0x09,\n NFTX = 0x0a,\n LOOKS_RARE_721 = 0x0b,\n X2Y2_721 = 0x0c,\n LOOKS_RARE_1155 = 0x0d,\n X2Y2_1155 = 0x0e,\n FOUNDATION = 0x0f,\n PAY_PORTION = 0x10,\n SUDOSWAP = 0x12,\n NFT20 = 0x13,\n OWNER_CHECK_721 = 0x14,\n OWNER_CHECK_1155 = 0x15,\n CRYPTOPUNKS = 0x16,\n PERMIT2_TRANSFER_FROM = 0x17,\n PERMIT2_TRANSFER_FROM_BATCH = 0x18,\n PERMIT2_PERMIT_BATCH = 0x19,\n}\n\nconst ALLOW_REVERT_FLAG = 0x80\n\nconst REVERTABLE_COMMANDS = new Set<CommandType>([\n CommandType.SEAPORT,\n CommandType.NFTX,\n CommandType.LOOKS_RARE_721,\n CommandType.LOOKS_RARE_1155,\n CommandType.X2Y2_721,\n CommandType.X2Y2_1155,\n CommandType.FOUNDATION,\n CommandType.SUDOSWAP,\n CommandType.NFT20,\n])\n\nconst ABI_DEFINITION: { [key in CommandType]: string[] } = {\n [CommandType.PERMIT]: ['bytes'],\n [CommandType.TRANSFER]: ['address', 'address', 'uint256'],\n [CommandType.V3_SWAP_EXACT_IN]: ['address', 'uint256', 'uint256', 'bytes', 'bool'],\n [CommandType.V3_SWAP_EXACT_OUT]: ['address', 'uint256', 'uint256', 'bytes', 'bool'],\n [CommandType.V2_SWAP_EXACT_IN]: ['uint256', 'uint256', 'address[]', 'address', 'bool'],\n [CommandType.V2_SWAP_EXACT_OUT]: ['uint256', 'uint256', 'address[]', 'address', 'bool'],\n [CommandType.SEAPORT]: ['uint256', 'bytes'],\n [CommandType.WRAP_ETH]: ['address', 'uint256'],\n [CommandType.UNWRAP_WETH]: ['address', 'uint256'],\n [CommandType.SWEEP]: ['address', 'address', 'uint256'],\n [CommandType.NFTX]: ['uint256', 'bytes'],\n [CommandType.LOOKS_RARE_721]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.X2Y2_721]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.LOOKS_RARE_1155]: ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'],\n [CommandType.X2Y2_1155]: ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'],\n [CommandType.FOUNDATION]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.PAY_PORTION]: ['address', 'address', 'uint256'],\n [CommandType.SUDOSWAP]: ['uint256', 'bytes'],\n [CommandType.OWNER_CHECK_721]: ['address', 'address', 'uint256'],\n [CommandType.OWNER_CHECK_1155]: ['address', 'address', 'uint256', 'uint256'],\n [CommandType.NFT20]: ['uint256', 'bytes'],\n [CommandType.CRYPTOPUNKS]: ['uint256', 'address', 'uint256'],\n [CommandType.PERMIT2_TRANSFER_FROM]: ['address', 'address', 'uint160'],\n [CommandType.PERMIT2_TRANSFER_FROM_BATCH]: ['bytes'],\n [CommandType.PERMIT2_PERMIT_BATCH]: ['bytes'],\n}\n\nexport class RoutePlanner {\n commands: string\n inputs: string[]\n\n constructor() {\n this.commands = '0x'\n this.inputs = []\n }\n\n addCommand(type: CommandType, parameters: any[], allowRevert = false): void {\n let command = createCommand(type, parameters)\n this.inputs.push(command.encodedInput)\n if (allowRevert) {\n if (!REVERTABLE_COMMANDS.has(command.type)) {\n throw new Error(`command type: ${command.type} cannot be allowed to revert`)\n }\n command.type = command.type | ALLOW_REVERT_FLAG\n }\n\n this.commands = this.commands.concat(command.type.toString(16).padStart(2, '0'))\n }\n}\n\nexport type RouterCommand = {\n type: CommandType\n encodedInput: string\n}\n\nexport function createCommand(type: CommandType, parameters: any[]): RouterCommand {\n const encodedInput = defaultAbiCoder.encode(ABI_DEFINITION[type], parameters)\n return { type, encodedInput }\n}\n","import { BigNumber } from 'ethers'\n\nexport const NARWHAL_ADDRESS = '0x5393904db506415D941726f3Cf0404Bb167537A0'\nexport const PERMIT2_ADDRESS = '0x6fEe9BeC3B3fc8f9DA5740f0efc6BbE6966cd6A6'\n\nexport const CONTRACT_BALANCE = BigNumber.from(2).pow(255)\nexport const ETH_ADDRESS = '0x0000000000000000000000000000000000000000'\n","import invariant from 'tiny-invariant'\nimport JSBI from 'jsbi'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { Trade as V2Trade, Pair } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade, Pool, encodeRouteToPath } from '@uniswap/v3-sdk'\nimport {\n Trade as RouterTrade,\n MixedRouteTrade,\n Protocol,\n IRoute,\n RouteV2,\n RouteV3,\n MixedRouteSDK,\n MixedRoute,\n SwapOptions as RouterSwapOptions,\n getOutputOfPools,\n encodeMixedRouteToPath,\n partitionMixedRouteByProtocol,\n} from '@uniswap/router-sdk'\nimport { Permit2Permit } from '../../utils/permit2'\nimport { Currency, TradeType, CurrencyAmount, Percent } from '@uniswap/sdk-core'\nimport { Command, TradeConfig } from '../Command'\nimport { NARWHAL_ADDRESS, CONTRACT_BALANCE } from '../../utils/constants'\n\n// the existing router permit object doesn't include enough data for permit2\n// so we extend swap options with the permit2 permit\nexport type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {\n inputTokenPermit?: Permit2Permit\n}\n\nexport type AnyUniswapTrade =\n | RouterTrade<Currency, Currency, TradeType>\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n | (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[]\n\nconst REFUND_ETH_PRICE_IMPACT_THRESHOLD = new Percent(JSBI.BigInt(50), JSBI.BigInt(100))\n\ninterface Swap<TInput extends Currency, TOutput extends Currency> {\n route: IRoute<TInput, TOutput, Pair | Pool>\n inputAmount: CurrencyAmount<TInput>\n outputAmount: CurrencyAmount<TOutput>\n}\n\n// Wrapper for uniswap router-sdk trade entity to encode swaps for Narwhal\n// also translates trade objects from previous (v2, v3) SDKs\nexport class UniswapTrade implements Command {\n static fromAny(trades: AnyUniswapTrade, options: SwapOptions): UniswapTrade {\n if (isRouterTrade(trades)) {\n return new UniswapTrade(trades as RouterTrade<Currency, Currency, TradeType>, options)\n }\n\n if (Array.isArray(trades)) {\n return UniswapTrade.from(trades, options)\n }\n\n return UniswapTrade.from(\n [\n trades as\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>,\n ],\n options\n )\n }\n\n // alternative constructor to create from protocol-specific sdks\n static from(\n trades: (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[],\n options: SwapOptions\n ): UniswapTrade {\n invariant(trades.length > 0, 'ZERO_TRADES')\n invariant(\n trades.every((trade) => trade.tradeType == trades[0].tradeType),\n 'INCONSISTENT_TRADE_TYPES'\n )\n\n return new UniswapTrade(\n // RouterTrade constructor handles validation of routes\n new RouterTrade({\n v2Routes: trades\n .filter((trade) => trade instanceof V2Trade)\n .map((trade) => ({\n routev2: trade.route as RouteV2<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n v3Routes: trades\n .filter((trade) => trade instanceof V3Trade)\n .map((trade) => ({\n routev3: trade.route as RouteV3<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n mixedRoutes: trades\n .filter((trade) => trade instanceof MixedRouteTrade)\n .map((trade) => ({\n mixedRoute: trade.route as MixedRouteSDK<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n tradeType: trades[0].tradeType,\n }),\n options\n )\n }\n\n constructor(public trade: RouterTrade<Currency, Currency, TradeType>, public options: SwapOptions) {}\n\n encode(planner: RoutePlanner, _config: TradeConfig): void {\n let payerIsUser = true\n if (this.trade.inputAmount.currency.isNative) {\n // TODO: opti if only one v2 pool we can directly send this to the pool\n planner.addCommand(CommandType.WRAP_ETH, [\n NARWHAL_ADDRESS,\n this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),\n ])\n // since WETH is now owned by the router, the router pays for inputs\n payerIsUser = false\n }\n\n for (const swap of this.trade.swaps) {\n switch (swap.route.protocol) {\n case Protocol.V2:\n addV2Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n case Protocol.V3:\n addV3Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n case Protocol.MIXED:\n addMixedSwap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n default:\n throw new Error('UNSUPPORTED_TRADE_PROTOCOL')\n }\n }\n\n if (this.trade.outputAmount.currency.isNative) {\n planner.addCommand(CommandType.UNWRAP_WETH, [\n this.options.recipient,\n this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString(),\n ])\n } else if (\n this.trade.inputAmount.currency.isNative &&\n (this.trade.tradeType === TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade))\n ) {\n // for exactOutput swaps that take native currency as input\n // we need to send back the change to the user\n planner.addCommand(CommandType.UNWRAP_WETH, [this.options.recipient, 0])\n }\n }\n}\n\n// encode a uniswap v2 swap\nfunction addV2Swap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n { route, inputAmount, outputAmount }: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const trade = new V2Trade(\n route as RouteV2<TInput, TOutput>,\n tradeType == TradeType.EXACT_INPUT ? inputAmount : outputAmount,\n tradeType\n )\n\n if (tradeType == TradeType.EXACT_INPUT) {\n planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n route.path.map((pool) => pool.address),\n // if native, we have to unwrap so keep in the router for now\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n payerIsUser,\n ])\n } else if (tradeType == TradeType.EXACT_OUTPUT) {\n planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, [\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n route.path.map((pool) => pool.address),\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n payerIsUser,\n ])\n }\n}\n\n// encode a uniswap v3 swap\nfunction addV3Swap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n { route, inputAmount, outputAmount }: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const trade = V3Trade.createUncheckedTrade({\n route: route as RouteV3<TInput, TOutput>,\n inputAmount,\n outputAmount,\n tradeType,\n })\n\n const path = encodeRouteToPath(route as RouteV3<TInput, TOutput>, trade.tradeType === TradeType.EXACT_OUTPUT)\n if (tradeType == TradeType.EXACT_INPUT) {\n planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n path,\n payerIsUser,\n ])\n } else if (tradeType == TradeType.EXACT_OUTPUT) {\n planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n path,\n payerIsUser,\n ])\n }\n}\n\n// encode a mixed route swap, i.e. including both v2 and v3 pools\nfunction addMixedSwap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n swap: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const { route, inputAmount, outputAmount } = swap\n\n // single hop, so it can be reduced to plain v2 or v3 swap logic\n if (route.pools.length === 1) {\n if (route.pools[0] instanceof Pool) {\n return addV3Swap(planner, swap, tradeType, options, payerIsUser)\n } else if (route.pools[0] instanceof Pair) {\n return addV2Swap(planner, swap, tradeType, options, payerIsUser)\n } else {\n throw new Error('Invalid route type')\n }\n }\n\n const trade = MixedRouteTrade.createUncheckedTrade({\n route: route as MixedRoute<TInput, TOutput>,\n inputAmount,\n outputAmount,\n tradeType,\n })\n\n const amountIn = trade.maximumAmountIn(options.slippageTolerance, inputAmount).quotient.toString()\n const amountOut = trade.minimumAmountOut(options.slippageTolerance, outputAmount).quotient.toString()\n\n // logic from\n // https://github.com/Uniswap/router-sdk/blob/d8eed164e6c79519983844ca8b6a3fc24ebcb8f8/src/swapRouter.ts#L276\n const sections = partitionMixedRouteByProtocol(route as MixedRoute<TInput, TOutput>)\n const isLastSectionInRoute = (i: number) => {\n return i === sections.length - 1\n }\n\n let outputToken\n let inputToken = route.input.wrapped\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i]\n /// Now, we get output of this section\n outputToken = getOutputOfPools(section, inputToken)\n\n const newRouteOriginal = new MixedRouteSDK(\n [...section],\n section[0].token0.equals(inputToken) ? section[0].token0 : section[0].token1,\n outputToken\n )\n const newRoute = new MixedRoute(newRouteOriginal)\n\n /// Previous output is now input\n inputToken = outputToken\n\n const mixedRouteIsAllV3 = (route: MixedRouteSDK<Currency, Currency>) => {\n return route.pools.every((pool) => pool instanceof Pool)\n }\n\n if (mixedRouteIsAllV3(newRoute)) {\n const path: string = encodeMixedRouteToPath(newRoute)\n // if output is native we keep tokens in the router for unwrap\n const recipient = isLastSectionInRoute(i)\n ? trade.outputAmount.currency.isNative\n ? NARWHAL_ADDRESS\n : options.recipient\n : // send tokens directly to the first v2 pair of the next section\n // note: because of the partitioning function we can be sure that the next section is v2\n (sections[i + 1][0] as Pair).liquidityToken.address\n\n planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [\n recipient,\n i == 0 ? amountIn : CONTRACT_BALANCE, // amountIn\n !isLastSectionInRoute(i) ? 0 : amountOut, // amountOut\n path, // path\n payerIsUser && i === 0, // payerIsUser\n ])\n } else {\n planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [\n i === 0 ? amountIn : CONTRACT_BALANCE, // amountIn\n !isLastSectionInRoute(i) ? 0 : amountOut, // amountOutMin\n newRoute.path.map((pool) => pool.address), // path\n isLastSectionInRoute(i) && !trade.outputAmount.currency.isNative ? options.recipient : NARWHAL_ADDRESS, // recipient\n payerIsUser && i === 0,\n ])\n }\n }\n}\n\n// if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap\nfunction riskOfPartialFill(trade: RouterTrade<Currency, Currency, TradeType>): boolean {\n return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD)\n}\n\n// Checks whether a given trade object is a router-sdk RouterTrade\n// simple instanceof check might not work for dependent packages\nexport function isRouterTrade(\n trade:\n | RouterTrade<Currency, Currency, TradeType>\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n | (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[]\n): boolean {\n return trade instanceof RouterTrade || (!Array.isArray(trade) && trade.hasOwnProperty('routes'))\n}\n","import { ethers } from 'ethers'\nimport { PermitSingle } from '@uniswap/permit2-sdk'\nimport { CommandType, RoutePlanner } from './routerCommands'\nimport PERMIT2_COMPILE from '../../out/Permit2.sol/Permit2.json'\n\nexport interface Permit2Permit extends PermitSingle {\n signature: string\n}\n\nconst PERMIT_SIGNATURE = 'permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)'\n\nconst PERMIT2_INTERFACE = new ethers.utils.Interface(PERMIT2_COMPILE.abi)\n\nexport function encodePermit(planner: RoutePlanner, permit: Permit2Permit): void {\n const calldata = PERMIT2_INTERFACE.encodeFunctionData(PERMIT_SIGNATURE, [\n ethers.constants.AddressZero,\n permit,\n permit.signature,\n ])\n\n planner.addCommand(CommandType.PERMIT, ['0x' + calldata.slice(74)])\n}\n","import invariant from 'tiny-invariant'\nimport { abi } from '@uniswap/narwhal/artifacts/contracts/Router.sol/Router.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { MethodParameters } from '@uniswap/v3-sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { NFTTrade, SupportedProtocolsData } from './entities/NFTTrade'\nimport { UniswapTrade, SwapOptions, AnyUniswapTrade } from './entities/protocols/uniswap'\nimport { CommandType, RoutePlanner } from './utils/routerCommands'\nimport { encodePermit } from './utils/permit2'\nimport { ETH_ADDRESS } from './utils/constants'\n\nexport type SwapRouterConfig = {\n sender?: string // address\n deadline?: BigNumberish\n}\n\nexport abstract class SwapRouter {\n public static INTERFACE: Interface = new Interface(abi)\n\n /**\n * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given swap.\n * @param trades to produce call parameters for\n */\n public static swapGenieCallParameters(\n trades: NFTTrade<SupportedProtocolsData>[],\n config: SwapRouterConfig\n ): MethodParameters {\n invariant(!!config.sender, 'SENDER_REQUIRED')\n let planner = new RoutePlanner()\n let totalPrice = BigNumber.from(0)\n\n const allowRevert = trades.length == 1 && trades[0].orders.length == 1 ? false : true\n\n for (const trade of trades) {\n trade.encode(planner, { allowRevert })\n totalPrice = totalPrice.add(trade.getTotalPrice())\n }\n\n planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, config.sender, 0])\n return SwapRouter.encodePlan(planner, totalPrice, config)\n }\n\n /**\n * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.\n * @param trades to produce call parameters for\n * @param options options for the call parameters\n */\n public static swapERC20CallParameters(trades: AnyUniswapTrade, options: SwapOptions): MethodParameters {\n // TODO: use permit if signature included in options\n const planner = new RoutePlanner()\n\n const trade = UniswapTrade.fromAny(trades, options)\n\n const inputCurrency = trade.trade.inputAmount.currency\n invariant(!(inputCurrency.isNative && !!options.inputTokenPermit), 'NATIVE_INPUT_PERMIT')\n if (options.inputTokenPermit && inputCurrency instanceof Token) {\n encodePermit(planner, options.inputTokenPermit)\n }\n\n const nativeCurrencyValue = inputCurrency.isNative\n ? BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString())\n : BigNumber.from(0)\n\n trade.encode(planner, { allowRevert: false })\n return SwapRouter.encodePlan(planner, nativeCurrencyValue, {\n deadline: options.deadlineOrPreviousBlockhash ? BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined,\n })\n }\n\n /**\n * Encodes a planned route into a method name and parameters for the Router contract.\n * @param planner the planned route\n * @param nativeCurrencyValue the native currency value of the planned route\n * @param config the router config\n */\n private static encodePlan(\n planner: RoutePlanner,\n nativeCurrencyValue: BigNumber,\n config: SwapRouterConfig = {}\n ): MethodParameters {\n const { commands, inputs } = planner\n\n const functionSignature = !!config.deadline ? 'execute(bytes,bytes[],uint256)' : 'execute(bytes,bytes[])'\n const parameters = !!config.deadline ? [commands, inputs, config.deadline] : [commands, inputs]\n const calldata = SwapRouter.INTERFACE.encodeFunctionData(functionSignature, parameters)\n return { calldata, value: nativeCurrencyValue.toString() }\n }\n}\n","import invariant from 'tiny-invariant'\nimport { BigNumberish } from 'ethers'\nimport { SeaportData } from './protocols/seaport'\nimport { FoundationData } from './protocols/foundation'\nimport { NFTXData } from './protocols/nftx'\nimport { NFT20Data } from './protocols/nft20'\nimport { RoutePlanner } from '../utils/routerCommands'\nimport { Command, TradeConfig } from './Command'\nimport { LooksRareData } from './protocols/looksRare'\nimport { SudoswapData } from './protocols/sudoswap'\nimport { CryptopunkData } from './protocols/cryptopunk'\nimport { X2Y2Data } from './protocols/x2y2'\n\nexport type SupportedProtocolsData =\n | SeaportData\n | FoundationData\n | NFTXData\n | LooksRareData\n | X2Y2Data\n | CryptopunkData\n | NFT20Data\n | SudoswapData\n\nexport abstract class NFTTrade<T> implements Command {\n readonly orders: T[]\n readonly market: Market\n\n constructor(market: Market, orders: T[]) {\n invariant(orders.length > 0, 'no buy Items')\n this.market = market\n this.orders = orders\n }\n\n abstract encode(planner: RoutePlanner, config: TradeConfig): void\n\n abstract getBuyItems(): BuyItem[]\n\n abstract getTotalPrice(): BigNumberish\n}\n\nexport type BuyItem = {\n tokenAddress: string\n tokenId: BigNumberish\n tokenType: TokenType\n amount?: BigNumberish // for 1155\n}\n\nexport enum Market {\n Foundation = 'foundation',\n LooksRare = 'looksrare',\n NFT20 = 'nft20',\n NFTX = 'nftx',\n Seaport = 'seaport',\n Sudoswap = 'Sudoswap',\n Cryptopunks = 'cryptopunks',\n X2Y2 = 'x2y2',\n}\n\nexport enum TokenType {\n ERC721 = 'ERC721',\n ERC1155 = 'ERC1155',\n Cryptopunk = 'Cryptopunk',\n}\n","import { TradeConfig } from '../Command'\nimport { NFTTrade, Market, TokenType, BuyItem } from '../NFTTrade'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type CryptopunkData = {\n tokenId: BigNumberish\n recipient: string\n value: BigNumberish\n}\n\nexport class CryptopunkTrade extends NFTTrade<CryptopunkData> {\n public static CRYPTOPUNK_ADDRESS: string = '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb'\n\n constructor(orders: CryptopunkData[]) {\n super(Market.Cryptopunks, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n planner.addCommand(CommandType.CRYPTOPUNKS, [item.tokenId, item.recipient, item.value], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: CryptopunkTrade.CRYPTOPUNK_ADDRESS,\n tokenId: item.tokenId,\n tokenType: TokenType.Cryptopunk,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/Foundation.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type FoundationData = {\n recipient: string\n tokenAddress: string\n tokenId: BigNumberish\n price: BigNumberish\n referrer: string // address\n}\n\nexport class FoundationTrade extends NFTTrade<FoundationData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: FoundationData[]) {\n super(Market.Foundation, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const calldata = FoundationTrade.INTERFACE.encodeFunctionData('buyV2', [\n item.tokenAddress,\n item.tokenId,\n item.price,\n item.referrer,\n ])\n planner.addCommand(\n CommandType.FOUNDATION,\n [item.price, calldata, item.recipient, item.tokenAddress, item.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.tokenAddress,\n tokenId: item.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.price)\n }\n return total\n }\n}\n","import abi from '../../../abis/LooksRare.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type MakerOrder = {\n collection: string\n tokenId: BigNumberish\n isOrderAsk: true\n signer: string\n strategy: string\n currency: string\n amount: BigNumberish\n price: BigNumberish\n minPercentageToAsk: BigNumberish\n nonce: BigNumberish\n startTime: BigNumberish\n endTime: BigNumberish\n v: BigNumberish\n r: string\n s: string\n params: string\n}\n\nexport type TakerOrder = {\n minPercentageToAsk: BigNumberish\n price: BigNumberish\n taker: string\n tokenId: BigNumberish\n isOrderAsk: boolean\n params: string\n}\n\nexport type LooksRareData = {\n makerOrder: MakerOrder\n takerOrder: TakerOrder\n recipient: string\n}\n\nexport class LooksRareTrade extends NFTTrade<LooksRareData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: LooksRareData[]) {\n super(Market.LooksRare, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const calldata = LooksRareTrade.INTERFACE.encodeFunctionData('matchAskWithTakerBidUsingETHAndWETH', [\n item.takerOrder,\n item.makerOrder,\n ])\n\n planner.addCommand(\n CommandType.LOOKS_RARE_721,\n [item.makerOrder.price, calldata, item.recipient, item.makerOrder.collection, item.makerOrder.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.makerOrder.collection,\n tokenId: item.makerOrder.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.makerOrder.price)\n }\n return total\n }\n}\n","import abi from '../../../abis/NFT20.json'\nimport { Interface } from '@ethersproject/abi'\nimport { TradeConfig } from '../Command'\nimport { NFTTrade, Market, TokenType, BuyItem } from '../NFTTrade'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type NFT20Data = {\n tokenAddress: string\n tokenIds: BigNumberish[]\n tokenAmounts: BigNumberish[]\n recipient: string\n fee: BigNumberish\n isV3: boolean\n value: BigNumberish\n}\n\nexport class NFT20Trade extends NFTTrade<NFT20Data> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: NFT20Data[]) {\n super(Market.NFT20, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = NFT20Trade.INTERFACE.encodeFunctionData('ethForNft', [\n order.tokenAddress,\n order.tokenIds,\n order.tokenAmounts,\n order.recipient,\n order.fee,\n order.isV3,\n ])\n planner.addCommand(CommandType.NFT20, [order.value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const pool of this.orders) {\n for (const tokenId of pool.tokenIds) {\n buyItems.push({\n tokenAddress: pool.tokenAddress,\n tokenId: tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/NFTXZap.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { Ether } from '@uniswap/sdk-core'\n\nexport type NFTXData = {\n recipient: string\n vaultAddress: string\n vaultId: BigNumberish\n tokenAddress: string\n tokenIds: BigNumberish[]\n value: BigNumber\n}\n\nexport class NFTXTrade extends NFTTrade<NFTXData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: NFTXData[]) {\n super(Market.NFTX, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = NFTXTrade.INTERFACE.encodeFunctionData('buyAndRedeem', [\n order.vaultId,\n order.tokenIds.length,\n order.tokenIds,\n [Ether.onChain(1).wrapped.address, order.vaultAddress],\n order.recipient,\n ])\n planner.addCommand(CommandType.NFTX, [order.value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const tokenId of order.tokenIds) {\n buyItems.push({\n tokenAddress: order.tokenAddress,\n tokenId: tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/Seaport.json'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\n\nexport type SeaportData = {\n items: Order[]\n recipient: string // address\n}\n\nexport type FulfillmentComponent = {\n orderIndex: BigNumberish\n itemIndex: BigNumberish\n}\n\nexport type OfferItem = {\n itemType: BigNumberish // enum\n token: string // address\n identifierOrCriteria: BigNumberish\n startAmount: BigNumberish\n endAmount: BigNumberish\n}\n\nexport type ConsiderationItem = OfferItem & {\n recipient: string\n}\n\nexport type Order = {\n parameters: OrderParameters\n signature: string\n}\n\ntype OrderParameters = {\n offerer: string // address,\n offer: OfferItem[]\n consideration: ConsiderationItem[]\n orderType: BigNumberish // enum\n startTime: BigNumberish\n endTime: BigNumberish\n zoneHash: string // bytes32\n zone: string // address\n salt: BigNumberish\n conduitKey: string // bytes32,\n totalOriginalConsiderationItems: BigNumberish\n}\n\nexport type AdvancedOrder = Order & {\n numerator: BigNumber // uint120\n denominator: BigNumber // uint120\n extraData: string // bytes\n}\n\nexport class SeaportTrade extends NFTTrade<SeaportData> {\n public static INTERFACE: Interface = new Interface(abi)\n public static OPENSEA_CONDUIT_KEY: string = '0x0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000'\n\n constructor(orders: SeaportData[]) {\n super(Market.Seaport, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n let advancedOrders: AdvancedOrder[] = []\n let orderFulfillments: FulfillmentComponent[][] = order.items.map((_, index) => [\n { orderIndex: index, itemIndex: 0 },\n ])\n let considerationFulFillments: FulfillmentComponent[][] = this.getConsiderationFulfillments(order.items)\n\n for (const item of order.items) {\n const { advancedOrder } = this.getAdvancedOrderParams(item)\n advancedOrders.push(advancedOrder)\n }\n\n let calldata: string\n if (advancedOrders.length == 1) {\n calldata = SeaportTrade.INTERFACE.encodeFunctionData('fulfillAdvancedOrder', [\n advancedOrders[0],\n [],\n SeaportTrade.OPENSEA_CONDUIT_KEY,\n order.recipient,\n ])\n } else {\n calldata = SeaportTrade.INTERFACE.encodeFunctionData('fulfillAvailableAdvancedOrders', [\n advancedOrders,\n [],\n orderFulfillments,\n considerationFulFillments,\n SeaportTrade.OPENSEA_CONDUIT_KEY,\n order.recipient,\n 100, // TODO: look into making this a better number\n ])\n }\n planner.addCommand(CommandType.SEAPORT, [this.getTotalPrice().toString(), calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const item of order.items) {\n for (const offer of item.parameters.offer) {\n buyItems.push({\n tokenAddress: offer.token,\n tokenId: offer.identifierOrCriteria,\n tokenType: TokenType.ERC721,\n })\n }\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumber {\n let totalPrice = BigNumber.from(0)\n for (const order of this.orders) {\n for (const item of order.items) {\n totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration))\n }\n }\n return totalPrice\n }\n\n private getConsiderationFulfillments(protocolDatas: Order[]): FulfillmentComponent[][] {\n let considerationFulfillments: FulfillmentComponent[][] = []\n const considerationRecipients: string[] = []\n\n for (const i in protocolDatas) {\n const protocolData = protocolDatas[i]\n\n for (const j in protocolData.parameters.consideration) {\n const item = protocolData.parameters.consideration[j]\n\n if (considerationRecipients.findIndex((x) => x === item.recipient) === -1) {\n considerationRecipients.push(item.recipient)\n }\n\n const recipientIndex = considerationRecipients.findIndex((x) => x === item.recipient)\n\n if (!considerationFulfillments[recipientIndex]) {\n considerationFulfillments.push([\n {\n orderIndex: i,\n itemIndex: j,\n },\n ])\n } else {\n considerationFulfillments[recipientIndex].push({\n orderIndex: i,\n itemIndex: j,\n })\n }\n }\n }\n return considerationFulfillments\n }\n\n private getAdvancedOrderParams(data: Order): { advancedOrder: AdvancedOrder; value: BigNumber } {\n const advancedOrder = {\n parameters: data.parameters,\n numerator: BigNumber.from('1'),\n denominator: BigNumber.from('1'),\n signature: data.signature,\n extraData: '0x00',\n }\n const value = this.calculateValue(data.parameters.consideration)\n return { advancedOrder, value }\n }\n\n private calculateValue(considerations: ConsiderationItem[]): BigNumber {\n return considerations.reduce(\n (amt: BigNumber, consideration: ConsiderationItem) => amt.add(consideration.startAmount),\n BigNumber.from(0)\n )\n }\n}\n","import abi from '../../../abis/Sudoswap.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\ntype PairSwap = {\n swapInfo: {\n pair: string // address\n nftIds: BigNumberish[]\n }\n tokenAddress: string // address\n maxCost: BigNumberish\n}\n\nexport type SudoswapData = {\n swaps: PairSwap[]\n nftRecipient: string\n ethRecipient: string\n deadline: BigNumberish\n}\n\nexport class SudoswapTrade extends NFTTrade<SudoswapData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: SudoswapData[]) {\n super(Market.Sudoswap, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = SudoswapTrade.INTERFACE.encodeFunctionData('robustSwapETHForSpecificNFTs', [\n order.swaps.map((swap) => {\n return { swapInfo: swap.swapInfo, maxCost: swap.maxCost }\n }),\n order.ethRecipient,\n order.nftRecipient,\n order.deadline,\n ])\n const value = order.swaps.reduce((prevVal, swap) => {\n return prevVal.add(swap.maxCost)\n }, BigNumber.from(0))\n planner.addCommand(CommandType.SUDOSWAP, [value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const swap of order.swaps) {\n for (const tokenId of swap.swapInfo.nftIds) {\n buyItems.push({\n tokenAddress: swap.tokenAddress,\n tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const order of this.orders) {\n for (const swap of order.swaps) {\n total = total.add(swap.maxCost)\n }\n }\n return total\n }\n}\n","import abi from '../../../abis/X2Y2.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type X2Y2Data = {\n signedInput: string\n recipient: string\n tokenAddress: string\n tokenId: BigNumberish\n price: BigNumberish\n}\n\nexport class X2Y2Trade extends NFTTrade<X2Y2Data> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: X2Y2Data[]) {\n super(Market.X2Y2, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const functionSelector = X2Y2Trade.INTERFACE.getSighash(X2Y2Trade.INTERFACE.getFunction('run'))\n const calldata = functionSelector + item.signedInput.slice(2)\n\n planner.addCommand(\n CommandType.X2Y2_721,\n [item.price, calldata, item.recipient, item.tokenAddress, item.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.tokenAddress,\n tokenId: item.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.price)\n }\n return total\n }\n}\n"],"names":["CommandType","ALLOW_REVERT_FLAG","REVERTABLE_COMMANDS","Set","SEAPORT","NFTX","LOOKS_RARE_721","LOOKS_RARE_1155","X2Y2_721","X2Y2_1155","FOUNDATION","SUDOSWAP","NFT20","ABI_DEFINITION","PERMIT","TRANSFER","V3_SWAP_EXACT_IN","V3_SWAP_EXACT_OUT","V2_SWAP_EXACT_IN","V2_SWAP_EXACT_OUT","WRAP_ETH","UNWRAP_WETH","SWEEP","PAY_PORTION","OWNER_CHECK_721","OWNER_CHECK_1155","CRYPTOPUNKS","PERMIT2_TRANSFER_FROM","PERMIT2_TRANSFER_FROM_BATCH","PERMIT2_PERMIT_BATCH","RoutePlanner","commands","inputs","addCommand","type","parameters","allowRevert","command","createCommand","push","encodedInput","has","Error","concat","toString","padStart","defaultAbiCoder","encode","NARWHAL_ADDRESS","CONTRACT_BALANCE","BigNumber","from","pow","ETH_ADDRESS","REFUND_ETH_PRICE_IMPACT_THRESHOLD","Percent","JSBI","BigInt","UniswapTrade","trade","options","fromAny","trades","isRouterTrade","Array","isArray","length","invariant","every","tradeType","RouterTrade","v2Routes","filter","V2Trade","map","routev2","route","inputAmount","outputAmount","v3Routes","V3Trade","routev3","mixedRoutes","MixedRouteTrade","mixedRoute","planner","_config","payerIsUser","currency","isNative","maximumAmountIn","slippageTolerance","quotient","swaps","swap","protocol","Protocol","V2","addV2Swap","V3","addV3Swap","MIXED","addMixedSwap","recipient","minimumAmountOut","TradeType","EXACT_OUTPUT","riskOfPartialFill","EXACT_INPUT","path","pool","address","createUncheckedTrade","encodeRouteToPath","pools","Pool","Pair","amountIn","amountOut","sections","partitionMixedRouteByProtocol","isLastSectionInRoute","i","outputToken","inputToken","input","wrapped","section","getOutputOfPools","newRouteOriginal","MixedRouteSDK","token0","equals","token1","newRoute","MixedRoute","mixedRouteIsAllV3","encodeMixedRouteToPath","liquidityToken","priceImpact","greaterThan","hasOwnProperty","PERMIT_SIGNATURE","PERMIT2_INTERFACE","ethers","utils","Interface","PERMIT2_COMPILE","abi","encodePermit","permit","calldata","encodeFunctionData","constants","AddressZero","signature","slice","SwapRouter","swapGenieCallParameters","config","sender","totalPrice","orders","add","getTotalPrice","encodePlan","swapERC20CallParameters","inputCurrency","inputTokenPermit","Token","nativeCurrencyValue","deadline","deadlineOrPreviousBlockhash","undefined","functionSignature","INTERFACE","value","NFTTrade","market","Market","TokenType","CryptopunkTrade","Cryptopunks","item","tokenId","getBuyItems","buyItems","tokenAddress","CRYPTOPUNK_ADDRESS","tokenType","Cryptopunk","total","FoundationTrade","Foundation","price","referrer","ERC721","LooksRareTrade","LooksRare","takerOrder","makerOrder","collection","NFT20Trade","order","tokenIds","tokenAmounts","fee","isV3","NFTXTrade","vaultId","Ether","onChain","vaultAddress","SeaportTrade","Seaport","advancedOrders","orderFulfillments","items","_","index","orderIndex","itemIndex","considerationFulFillments","getConsiderationFulfillments","getAdvancedOrderParams","advancedOrder","OPENSEA_CONDUIT_KEY","offer","token","identifierOrCriteria","calculateValue","consideration","protocolDatas","considerationFulfillments","considerationRecipients","protocolData","j","findIndex","x","recipientIndex","data","numerator","denominator","extraData","considerations","reduce","amt","startAmount","SudoswapTrade","Sudoswap","swapInfo","maxCost","ethRecipient","nftRecipient","prevVal","nftIds","X2Y2Trade","X2Y2","functionSelector","getSighash","getFunction","signedInput"],"mappings":"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lG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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mBAAS,gBAAc,IAAI9D,eAAS,CAACE,KAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|