```\nfunction mint(uint256 shares, address receiver) public isOpen returns (uint256 assets) {\n if(shares == 0) revert InvalidParams();\n // These transfers need to happen before the mint, and this is forcing a higher degree of coupling than is ideal\n assets = previewMint(shares);\n asset.transferFrom(msg.sender, address(this), assets);\n liquidStakingToken.mint(receiver, shares);\n assets = convertToAssets(shares);\n emit Deposit(msg.sender, receiver, assets, shares);\n}\n```\n