{
  "4663": {
    "builder": "0xF1Bd8E93f6C5d6D26aDdDE2271Eb3dAa0938073C",
    "npm": "0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3",
    "factory": "0x1f7d7550B1b028f7571E69A784071F0205FD2EfA",
    "quoter": "0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7",
    "swapRouter": "0xCaf681a66D020601342297493863E78C959E5cb2",
    "poolManager": "0x8366a39CC670B4001A1121B8F6A443A643e40951",
    "v4PositionManager": "0x58daec3116aae6D93017bAAea7749052E8a04fA7",
    "permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
    "usdg": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
    "weth": "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",
    "builderDeployBlock": 83120836
  },
  "abi": {
    "builder": [
      {
        "type": "constructor",
        "inputs": [
          {
            "name": "npm_",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "treasury_",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "owner_",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "BPS",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint16",
            "internalType": "uint16"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "MAX_FEE_BPS",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint16",
            "internalType": "uint16"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "MAX_RUNGS",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "MAX_SHAPE",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint8",
            "internalType": "uint8"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "acceptOwnership",
        "inputs": [],
        "outputs": [],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "build",
        "inputs": [
          {
            "name": "b",
            "type": "tuple",
            "internalType": "struct StepwellBuilder.Build",
            "components": [
              {
                "name": "token0",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "token1",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "fee",
                "type": "uint24",
                "internalType": "uint24"
              },
              {
                "name": "rungs",
                "type": "tuple[]",
                "internalType": "struct StepwellBuilder.Rung[]",
                "components": [
                  {
                    "name": "tickLower",
                    "type": "int24",
                    "internalType": "int24"
                  },
                  {
                    "name": "tickUpper",
                    "type": "int24",
                    "internalType": "int24"
                  },
                  {
                    "name": "amount0",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "amount1",
                    "type": "uint256",
                    "internalType": "uint256"
                  }
                ]
              },
              {
                "name": "amount0Max",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "amount1Max",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "slippageBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "deadline",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "shape",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "isPublic",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "label",
                "type": "bytes32",
                "internalType": "bytes32"
              }
            ]
          }
        ],
        "outputs": [
          {
            "name": "tokenIds",
            "type": "uint256[]",
            "internalType": "uint256[]"
          }
        ],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "factory",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "contract IUniswapV3Factory"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "feeBps",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint16",
            "internalType": "uint16"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "grossUp",
        "inputs": [
          {
            "name": "desired",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "npm",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "contract INonfungiblePositionManager"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "owner",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "pendingOwner",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "quoteFee",
        "inputs": [
          {
            "name": "amount",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "renounceOwnership",
        "inputs": [],
        "outputs": [],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "setFeeBps",
        "inputs": [
          {
            "name": "newFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          }
        ],
        "outputs": [],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "setTreasury",
        "inputs": [
          {
            "name": "newTreasury",
            "type": "address",
            "internalType": "address"
          }
        ],
        "outputs": [],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "transferOwnership",
        "inputs": [
          {
            "name": "newOwner",
            "type": "address",
            "internalType": "address"
          }
        ],
        "outputs": [],
        "stateMutability": "nonpayable"
      },
      {
        "type": "function",
        "name": "treasury",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "event",
        "name": "Built",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          },
          {
            "name": "pool",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          },
          {
            "name": "shape",
            "type": "uint8",
            "indexed": false,
            "internalType": "uint8"
          },
          {
            "name": "isPublic",
            "type": "bool",
            "indexed": false,
            "internalType": "bool"
          },
          {
            "name": "label",
            "type": "bytes32",
            "indexed": false,
            "internalType": "bytes32"
          },
          {
            "name": "tokenIds",
            "type": "uint256[]",
            "indexed": false,
            "internalType": "uint256[]"
          },
          {
            "name": "tickLowers",
            "type": "int24[]",
            "indexed": false,
            "internalType": "int24[]"
          },
          {
            "name": "tickUppers",
            "type": "int24[]",
            "indexed": false,
            "internalType": "int24[]"
          },
          {
            "name": "liquidities",
            "type": "uint128[]",
            "indexed": false,
            "internalType": "uint128[]"
          },
          {
            "name": "amount0Used",
            "type": "uint256",
            "indexed": false,
            "internalType": "uint256"
          },
          {
            "name": "amount1Used",
            "type": "uint256",
            "indexed": false,
            "internalType": "uint256"
          },
          {
            "name": "fee0",
            "type": "uint256",
            "indexed": false,
            "internalType": "uint256"
          },
          {
            "name": "fee1",
            "type": "uint256",
            "indexed": false,
            "internalType": "uint256"
          }
        ],
        "anonymous": false
      },
      {
        "type": "event",
        "name": "FeeBpsUpdated",
        "inputs": [
          {
            "name": "oldFeeBps",
            "type": "uint16",
            "indexed": false,
            "internalType": "uint16"
          },
          {
            "name": "newFeeBps",
            "type": "uint16",
            "indexed": false,
            "internalType": "uint16"
          }
        ],
        "anonymous": false
      },
      {
        "type": "event",
        "name": "OwnershipTransferStarted",
        "inputs": [
          {
            "name": "previousOwner",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          },
          {
            "name": "newOwner",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          }
        ],
        "anonymous": false
      },
      {
        "type": "event",
        "name": "OwnershipTransferred",
        "inputs": [
          {
            "name": "previousOwner",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          },
          {
            "name": "newOwner",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          }
        ],
        "anonymous": false
      },
      {
        "type": "event",
        "name": "TreasuryUpdated",
        "inputs": [
          {
            "name": "oldTreasury",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          },
          {
            "name": "newTreasury",
            "type": "address",
            "indexed": true,
            "internalType": "address"
          }
        ],
        "anonymous": false
      },
      {
        "type": "error",
        "name": "BadRungCount",
        "inputs": [
          {
            "name": "count",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "BadShape",
        "inputs": [
          {
            "name": "shape",
            "type": "uint8",
            "internalType": "uint8"
          }
        ]
      },
      {
        "type": "error",
        "name": "BadSlippage",
        "inputs": [
          {
            "name": "slippageBps",
            "type": "uint16",
            "internalType": "uint16"
          }
        ]
      },
      {
        "type": "error",
        "name": "BadTicks",
        "inputs": [
          {
            "name": "index",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "BalanceNotRestored",
        "inputs": []
      },
      {
        "type": "error",
        "name": "EmptyRung",
        "inputs": [
          {
            "name": "index",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "Expired",
        "inputs": [
          {
            "name": "deadline",
            "type": "uint64",
            "internalType": "uint64"
          }
        ]
      },
      {
        "type": "error",
        "name": "FeeTooHigh",
        "inputs": [
          {
            "name": "feeBps",
            "type": "uint16",
            "internalType": "uint16"
          }
        ]
      },
      {
        "type": "error",
        "name": "InsufficientInput",
        "inputs": [
          {
            "name": "needed0",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "available0",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "needed1",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "available1",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "OwnableInvalidOwner",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          }
        ]
      },
      {
        "type": "error",
        "name": "OwnableUnauthorizedAccount",
        "inputs": [
          {
            "name": "account",
            "type": "address",
            "internalType": "address"
          }
        ]
      },
      {
        "type": "error",
        "name": "PoolNotFound",
        "inputs": []
      },
      {
        "type": "error",
        "name": "ReentrancyGuardReentrantCall",
        "inputs": []
      },
      {
        "type": "error",
        "name": "RungsOverlap",
        "inputs": [
          {
            "name": "index",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "SafeERC20FailedOperation",
        "inputs": [
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          }
        ]
      },
      {
        "type": "error",
        "name": "TickNotAligned",
        "inputs": [
          {
            "name": "index",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      {
        "type": "error",
        "name": "UnsortedTokens",
        "inputs": []
      },
      {
        "type": "error",
        "name": "ZeroAddress",
        "inputs": []
      }
    ],
    "npm": [
      {
        "type": "function",
        "name": "positions",
        "inputs": [
          {
            "name": "tokenId",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "nonce",
            "type": "uint96",
            "internalType": "uint96"
          },
          {
            "name": "operator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "token0",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "token1",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "fee",
            "type": "uint24",
            "internalType": "uint24"
          },
          {
            "name": "tickLower",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "tickUpper",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "liquidity",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "feeGrowthInside0LastX128",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "feeGrowthInside1LastX128",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "tokensOwed0",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "tokensOwed1",
            "type": "uint128",
            "internalType": "uint128"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "balanceOf",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "ownerOf",
        "inputs": [
          {
            "name": "tokenId",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "tokenOfOwnerByIndex",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "index",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "multicall",
        "inputs": [
          {
            "name": "data",
            "type": "bytes[]",
            "internalType": "bytes[]"
          }
        ],
        "outputs": [
          {
            "name": "results",
            "type": "bytes[]",
            "internalType": "bytes[]"
          }
        ],
        "stateMutability": "payable"
      },
      {
        "type": "function",
        "name": "collect",
        "inputs": [
          {
            "name": "params",
            "type": "tuple",
            "internalType": "struct INonfungiblePositionManager.CollectParams",
            "components": [
              {
                "name": "tokenId",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "recipient",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "amount0Max",
                "type": "uint128",
                "internalType": "uint128"
              },
              {
                "name": "amount1Max",
                "type": "uint128",
                "internalType": "uint128"
              }
            ]
          }
        ],
        "outputs": [
          {
            "name": "amount0",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "amount1",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "payable"
      },
      {
        "type": "function",
        "name": "decreaseLiquidity",
        "inputs": [
          {
            "name": "params",
            "type": "tuple",
            "internalType": "struct INonfungiblePositionManager.DecreaseLiquidityParams",
            "components": [
              {
                "name": "tokenId",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "liquidity",
                "type": "uint128",
                "internalType": "uint128"
              },
              {
                "name": "amount0Min",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "amount1Min",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "deadline",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          }
        ],
        "outputs": [
          {
            "name": "amount0",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "amount1",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "payable"
      },
      {
        "type": "function",
        "name": "burn",
        "inputs": [
          {
            "name": "tokenId",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [],
        "stateMutability": "payable"
      }
    ],
    "pool": [
      {
        "type": "function",
        "name": "slot0",
        "inputs": [],
        "outputs": [
          {
            "name": "sqrtPriceX96",
            "type": "uint160",
            "internalType": "uint160"
          },
          {
            "name": "tick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "observationIndex",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "observationCardinality",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "observationCardinalityNext",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "feeProtocol",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "unlocked",
            "type": "bool",
            "internalType": "bool"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "liquidity",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint128",
            "internalType": "uint128"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "tickSpacing",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "int24",
            "internalType": "int24"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "ticks",
        "inputs": [
          {
            "name": "tick",
            "type": "int24",
            "internalType": "int24"
          }
        ],
        "outputs": [
          {
            "name": "liquidityGross",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "liquidityNet",
            "type": "int128",
            "internalType": "int128"
          },
          {
            "name": "feeGrowthOutside0X128",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "feeGrowthOutside1X128",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "tickCumulativeOutside",
            "type": "int56",
            "internalType": "int56"
          },
          {
            "name": "secondsPerLiquidityOutsideX128",
            "type": "uint160",
            "internalType": "uint160"
          },
          {
            "name": "secondsOutside",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "initialized",
            "type": "bool",
            "internalType": "bool"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "tickBitmap",
        "inputs": [
          {
            "name": "wordPosition",
            "type": "int16",
            "internalType": "int16"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "fee",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint24",
            "internalType": "uint24"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "token0",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "token1",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      }
    ],
    "factory": [
      {
        "type": "function",
        "name": "getPool",
        "inputs": [
          {
            "name": "tokenA",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokenB",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "fee",
            "type": "uint24",
            "internalType": "uint24"
          }
        ],
        "outputs": [
          {
            "name": "pool",
            "type": "address",
            "internalType": "address"
          }
        ],
        "stateMutability": "view"
      }
    ],
    "erc20": [
      {
        "type": "function",
        "name": "symbol",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "string",
            "internalType": "string"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "name",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "string",
            "internalType": "string"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "decimals",
        "inputs": [],
        "outputs": [
          {
            "name": "",
            "type": "uint8",
            "internalType": "uint8"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "balanceOf",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "allowance",
        "inputs": [
          {
            "name": "owner",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "spender",
            "type": "address",
            "internalType": "address"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "stateMutability": "view"
      },
      {
        "type": "function",
        "name": "approve",
        "inputs": [
          {
            "name": "spender",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "amount",
            "type": "uint256",
            "internalType": "uint256"
          }
        ],
        "outputs": [
          {
            "name": "",
            "type": "bool",
            "internalType": "bool"
          }
        ],
        "stateMutability": "nonpayable"
      }
    ]
  }
}
