[{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"positionManager_","type":"address"},{"internalType":"contract ISwapRouter","name":"router_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256[]","name":"tokenAmounts","type":"int256[]"}],"name":"RebalancedPools","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"origin","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"uint32","name":"oracleObservationDelta","type":"uint32"},{"internalType":"uint24","name":"maxTickDeviation","type":"uint24"},{"internalType":"uint256","name":"maxSlippageD","type":"uint256"}],"indexed":false,"internalType":"struct MStrategy.OracleParams","name":"params","type":"tuple"}],"name":"SetOracleParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"origin","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"int24","name":"tickMin","type":"int24"},{"internalType":"int24","name":"tickMax","type":"int24"},{"internalType":"int24","name":"minTickRebalanceThreshold","type":"int24"},{"internalType":"int24","name":"tickNeighborhood","type":"int24"},{"internalType":"int24","name":"tickIncrease","type":"int24"},{"internalType":"uint256","name":"erc20MoneyRatioD","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation0D","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation1D","type":"uint256"}],"indexed":false,"internalType":"struct MStrategy.RatioParams","name":"params","type":"tuple"}],"name":"SetRatioParams","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint8","name":"tokenInIndex","type":"uint8"},{"internalType":"uint256","name":"priceX96","type":"uint256"},{"internalType":"uint256[]","name":"erc20Tvl","type":"uint256[]"},{"internalType":"contract IUniswapV3Pool","name":"pool","type":"address"},{"internalType":"contract ISwapRouter","name":"router","type":"address"},{"internalType":"contract IIntegrationVault","name":"erc20Vault","type":"address"},{"internalType":"contract IIntegrationVault","name":"moneyVault","type":"address"}],"indexed":false,"internalType":"struct MStrategy.SwapToTargetParams","name":"params","type":"tuple"}],"name":"SwappedTokens","type":"event"},{"inputs":[],"name":"ADMIN_DELEGATE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"APPROVE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXACT_INPUT_SINGLE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractNameBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractVersionBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens_","type":"address[]"},{"internalType":"contract IERC20Vault","name":"erc20Vault_","type":"address"},{"internalType":"contract IIntegrationVault","name":"moneyVault_","type":"address"},{"internalType":"uint24","name":"fee_","type":"uint24"},{"internalType":"address","name":"admin_","type":"address"}],"name":"createStrategy","outputs":[{"internalType":"contract MStrategy","name":"strategy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"erc20Vault","outputs":[{"internalType":"contract IERC20Vault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAverageTick","outputs":[{"internalType":"int24","name":"averageTick","type":"int24"},{"internalType":"int24","name":"deviation","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract INonfungiblePositionManager","name":"positionManager_","type":"address"},{"internalType":"contract ISwapRouter","name":"router_","type":"address"},{"internalType":"address[]","name":"tokens_","type":"address[]"},{"internalType":"contract IERC20Vault","name":"erc20Vault_","type":"address"},{"internalType":"contract IIntegrationVault","name":"moneyVault_","type":"address"},{"internalType":"uint24","name":"fee_","type":"uint24"},{"internalType":"address","name":"admin_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebalanceTick","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IIntegrationVault","name":"fromVault","type":"address"},{"internalType":"contract IIntegrationVault","name":"toVault","type":"address"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"bytes","name":"vaultOptions","type":"bytes"}],"name":"manualPull","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"moneyVault","outputs":[{"internalType":"contract IIntegrationVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oracleParams","outputs":[{"internalType":"uint32","name":"oracleObservationDelta","type":"uint32"},{"internalType":"uint24","name":"maxTickDeviation","type":"uint24"},{"internalType":"uint256","name":"maxSlippageD","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract IUniswapV3Pool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionManager","outputs":[{"internalType":"contract INonfungiblePositionManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ratioParams","outputs":[{"internalType":"int24","name":"tickMin","type":"int24"},{"internalType":"int24","name":"tickMax","type":"int24"},{"internalType":"int24","name":"minTickRebalanceThreshold","type":"int24"},{"internalType":"int24","name":"tickNeighborhood","type":"int24"},{"internalType":"int24","name":"tickIncrease","type":"int24"},{"internalType":"uint256","name":"erc20MoneyRatioD","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation0D","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation1D","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"minTokensAmount","type":"uint256[]"},{"internalType":"bytes","name":"vaultOptions","type":"bytes"}],"name":"rebalance","outputs":[{"internalType":"int256[]","name":"poolAmounts","type":"int256[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"bool","name":"zeroToOne","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"oracleObservationDelta","type":"uint32"},{"internalType":"uint24","name":"maxTickDeviation","type":"uint24"},{"internalType":"uint256","name":"maxSlippageD","type":"uint256"}],"internalType":"struct MStrategy.OracleParams","name":"params","type":"tuple"}],"name":"setOracleParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"int24","name":"tickMin","type":"int24"},{"internalType":"int24","name":"tickMax","type":"int24"},{"internalType":"int24","name":"minTickRebalanceThreshold","type":"int24"},{"internalType":"int24","name":"tickNeighborhood","type":"int24"},{"internalType":"int24","name":"tickIncrease","type":"int24"},{"internalType":"uint256","name":"erc20MoneyRatioD","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation0D","type":"uint256"},{"internalType":"uint256","name":"minErc20MoneyRatioDeviation1D","type":"uint256"}],"internalType":"struct MStrategy.RatioParams","name":"params","type":"tuple"}],"name":"setRatioParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]