@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.
@@ -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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"}