[
  {
    "inputs": [],
    "name": "NonContractCall",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SenderNotAdmin",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SenderNotOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "decimals",
        "type": "uint256"
      }
    ],
    "name": "TokenDecimalsUnsupportedError",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "TriggerNotActiveError",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxTxCost",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "txCost",
        "type": "uint256"
      }
    ],
    "name": "TxCostInFeeTokenTooHighError",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      }
    ],
    "name": "TxSaverAuthorizationError",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroTokenPriceInEthError",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CHAINLINK_FEED_REGISTRY",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "EXECUTE_ACTION_SELECTOR",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "EXECUTE_SELECTOR",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_DFS_FEE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SANITY_GAS_PRICE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SENTINEL_MODULES",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TX_SAVER_EXECUTOR_ID",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "bytes[]",
            "name": "callData",
            "type": "bytes[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "subData",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes4[]",
            "name": "actionIds",
            "type": "bytes4[]"
          },
          {
            "internalType": "uint8[][]",
            "name": "paramMapping",
            "type": "uint8[][]"
          }
        ],
        "internalType": "struct StrategyModel.Recipe",
        "name": "_currRecipe",
        "type": "tuple"
      },
      {
        "internalType": "bytes32",
        "name": "_flAmount",
        "type": "bytes32"
      }
    ],
    "name": "_executeActionsFromFL",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "adminVault",
    "outputs": [
      {
        "internalType": "contract AdminVault",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_gasUsed",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_feeToken",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_l1GasCostInEth",
        "type": "uint256"
      }
    ],
    "name": "calcGasCost",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "txCost",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_moduleAddr",
        "type": "address"
      }
    ],
    "name": "disableLastModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_moduleAddr",
        "type": "address"
      }
    ],
    "name": "enableModule",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "bytes[]",
            "name": "callData",
            "type": "bytes[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "subData",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes4[]",
            "name": "actionIds",
            "type": "bytes4[]"
          },
          {
            "internalType": "uint8[][]",
            "name": "paramMapping",
            "type": "uint8[][]"
          }
        ],
        "internalType": "struct StrategyModel.Recipe",
        "name": "_currRecipe",
        "type": "tuple"
      }
    ],
    "name": "executeRecipe",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_subId",
        "type": "uint256"
      },
      {
        "internalType": "bytes[]",
        "name": "_actionCallData",
        "type": "bytes[]"
      },
      {
        "internalType": "bytes[]",
        "name": "_triggerCallData",
        "type": "bytes[]"
      },
      {
        "internalType": "uint256",
        "name": "_strategyIndex",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "strategyOrBundleId",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "isBundle",
            "type": "bool"
          },
          {
            "internalType": "bytes[]",
            "name": "triggerData",
            "type": "bytes[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "subData",
            "type": "bytes32[]"
          }
        ],
        "internalType": "struct StrategyModel.StrategySub",
        "name": "_sub",
        "type": "tuple"
      }
    ],
    "name": "executeRecipeFromStrategy",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "bytes[]",
            "name": "callData",
            "type": "bytes[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "subData",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes4[]",
            "name": "actionIds",
            "type": "bytes4[]"
          },
          {
            "internalType": "uint8[][]",
            "name": "paramMapping",
            "type": "uint8[][]"
          }
        ],
        "internalType": "struct StrategyModel.Recipe",
        "name": "_currRecipe",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "maxTxCostInFeeToken",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "feeToken",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "tokenPriceInEth",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "shouldTakeFeeFromPosition",
            "type": "bool"
          }
        ],
        "internalType": "struct StrategyModel.TxSaverSignedData",
        "name": "_txSaverData",
        "type": "tuple"
      }
    ],
    "name": "executeRecipeFromTxSaver",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "feeRecipient",
    "outputs": [
      {
        "internalType": "contract FeeRecipient",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "feedRegistry",
    "outputs": [
      {
        "internalType": "contract IFeedRegistry",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getAaveTokenPriceInETH",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "price",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getAaveTokenPriceInUSD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getAaveV3TokenPriceInETH",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getAaveV3TokenPriceInUSD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "price",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      }
    ],
    "name": "getAddrForChainlinkOracle",
    "outputs": [
      {
        "internalType": "address",
        "name": "tokenAddrForChainlinkUsage",
        "type": "address"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      }
    ],
    "name": "getChainlinkPriceInETH",
    "outputs": [
      {
        "internalType": "int256",
        "name": "chainlinkPriceInETH",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "_useFallback",
        "type": "bool"
      }
    ],
    "name": "getChainlinkPriceInUSD",
    "outputs": [
      {
        "internalType": "int256",
        "name": "chainlinkPriceInUSD",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      }
    ],
    "name": "getPriceInETH",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      }
    ],
    "name": "getPriceInUSD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      },
      {
        "internalType": "uint80",
        "name": "_roundId",
        "type": "uint80"
      },
      {
        "internalType": "contract IAggregatorV3",
        "name": "aggregator",
        "type": "address"
      }
    ],
    "name": "getRoundInfo",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "updateTimestamp",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_inputTokenAddr",
        "type": "address"
      },
      {
        "internalType": "uint80",
        "name": "_roundId",
        "type": "uint80"
      }
    ],
    "name": "getRoundInfo",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "updateTimestamp",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getSparkTokenPriceInETH",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenAddr",
        "type": "address"
      }
    ],
    "name": "getSparkTokenPriceInUSD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "price",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "_btcPrice",
        "type": "int256"
      }
    ],
    "name": "getWBtcPrice",
    "outputs": [
      {
        "internalType": "int256",
        "name": "wBtcPrice",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "_stEthPrice",
        "type": "int256"
      }
    ],
    "name": "getWStEthPrice",
    "outputs": [
      {
        "internalType": "int256",
        "name": "wStEthPrice",
        "type": "int256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contractAddr",
        "type": "address"
      }
    ],
    "name": "giveProxyPermission",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_proxy",
        "type": "address"
      }
    ],
    "name": "isDSProxy",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "kill",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "registry",
    "outputs": [
      {
        "internalType": "contract DFSRegistry",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contractAddr",
        "type": "address"
      }
    ],
    "name": "removeProxyPermission",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "name": "withdrawStuckFunds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]