Vulnerability: DoS in BBLeverage and SGLLeverage due to using wrong leverage executor interface
Severity: medium

Description:
A DoS takes place due to utilizing a wrong interface in the leverage modules.\\n`BBLeverage.sol` and `SGLLeverage.sol` use a wrong interface to interact with the `leverageExecutor` contract. This will make the `sellCollateral()` and `buyCollateral()` functions always fail and render the `BBLeverage.sol` and `SGLLeverage.sol` unusable.\\nAs we can see in the following snippets, when these contracts interact with the `leverageExecutor` to call its `getAsset()` and `getCollateral()` functions, they do it passing 6 parameters in each of the functions:\\n```\\n// BBLeverage.sol\\n\\nfunction buyCollateral(address from, uint256 borrowAmount, uint256 supplyAmount, bytes calldata data) \\n        external\\n        optionNotPaused(PauseType.LeverageBuy)\\n        solvent(from, false)\\n        notSelf(from)  \\n        returns (uint256 amountOut) \\n    { \\n        // rest of code\\n\\n        \\n        { \\n            amountOut = leverageExecutor.getCollateral( \\n                collateralId, \\n                address(asset),\\n                address(collateral),\\n                memoryData.supplyShareToAmount + memoryData.borrowShareToAmount,\\n                calldata_.from,\\n                calldata_.data\\n            );\\n        }\\n        // rest of code\\n    }\\n    \\n    function sellCollateral(address from, uint256 share, bytes calldata data)\\n        external\\n        optionNotPaused(PauseType.LeverageSell)\\n        solvent(from, false)\\n        notSelf(from)\\n        returns (uint256 amountOut)\\n    {\\n       // rest of code\\n\\n        amountOut = leverageExecutor.getAsset(\\n            assetId, address(collateral), address(asset), memoryData.leverageAmount, from, data\\n        ); \\n\\n        // rest of code\\n    }  \\n```\\n\\nHowever, the leverage executor's `getAsset()` and `getCollateral()` functions have just 4 parameters, as seen in the `BaseLeverageExecutor.sol` base contract used to build all leverage executors:\\n```\\n// BaseLeverageExecutor.sol\\n\\n/**\\n     * @notice Buys an asked amount of collateral with an asset using the ZeroXSwapper.\\n     * @dev Expects the token to be already transferred to this contract.\\n     * @param assetAddress asset address.\\n     * @param collateralAddress collateral address.\\n     * @param assetAmountIn amount to swap.\\n     * @param data SLeverageSwapData.\\n     */\\n    function getCollateral(address assetAddress, address collateralAddress, uint256 assetAmountIn, bytes calldata data)\\n        external\\n        payable\\n        virtual\\n        returns (uint256 collateralAmountOut)\\n    {}\\n\\n    /**\\n     * @notice Buys an asked amount of asset with a collateral using the ZeroXSwapper.\\n     * @dev Expects the token to be already transferred to this contract.\\n     * @param collateralAddress collateral address.\\n     * @param assetAddress asset address.\\n     * @param collateralAmountIn amount to swap.\\n     * @param data SLeverageSwapData.\\n     */\\n    function getAsset(address collateralAddress, address assetAddress, uint256 collateralAmountIn, bytes calldata data)\\n        external\\n        virtual\\n        returns (uint256 assetAmountOut)\\n    {}\\n```\\n

Impact:
High. Calls to the leverage modules will always fail, rendering these features unusable.

Recommended mitigation:
Update the interface used in BBLeverage.sol and SGLLeverage.sol and pass the proper parameters so that calls can succeed.