// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

/**
 * @title MockDVMPool
 * @notice Minimal mock of a DODO PMM pool so DODOPMMIntegration can deploy and create pools on Chain 138
 * @dev Not for production; use real DODO DVM when available. Implements view and swap stubs.
 */
contract MockDVMPool {
    address public baseToken;
    address public quoteToken;
    uint256 public baseReserve;
    uint256 public quoteReserve;
    uint256 public midPrice;
    uint256 public constant _K_ = 0.5e18;       // 50% slippage factor (DODO convention)
    uint256 public constant _LP_FEE_RATE_ = 3; // 0.03% in basis points

    constructor(
        address _baseToken,
        address _quoteToken,
        uint256 _initialPrice
    ) {
        baseToken = _baseToken;
        quoteToken = _quoteToken;
        midPrice = _initialPrice;
        baseReserve = 0;
        quoteReserve = 0;
    }

    function _BASE_TOKEN_() external view returns (address) {
        return baseToken;
    }

    function _QUOTE_TOKEN_() external view returns (address) {
        return quoteToken;
    }

    function _BASE_RESERVE_() external view returns (uint256) {
        return baseReserve;
    }

    function _QUOTE_RESERVE_() external view returns (uint256) {
        return quoteReserve;
    }

    function getVaultReserve() external view returns (uint256, uint256) {
        return (baseReserve, quoteReserve);
    }

    function getMidPrice() external view returns (uint256) {
        return midPrice;
    }

    /// @notice Oracle price (same as mid for mock); enables MCP dodo_pmm_v2_like profile
    function getOraclePrice() external view returns (uint256) {
        return midPrice;
    }

    function sellBase(uint256) external returns (uint256) {
        return 0;
    }

    function sellQuote(uint256) external returns (uint256) {
        return 0;
    }

    function buyShares(address) external returns (uint256, uint256, uint256) {
        return (0, 0, 0);
    }
}
