contract AssessorLike is FixedPoint {
    // definitions
    function calcSeniorRatio(uint seniorAsset, uint NAV, uint reserve_) public pure returns(uint);
    function calcSeniorAssetValue(uint seniorRedeem, uint seniorSupply,
        uint currSeniorAsset, uint reserve_, uint nav_) public pure returns (uint seniorAsset);
    function calcSeniorRatio(uint seniorRedeem, uint seniorSupply,
        uint currSeniorAsset, uint newReserve, uint nav) public pure returns (uint seniorRatio);

    // definitions based on assessor state
    function calcSeniorTokenPrice(uint NAV, uint reserve) external returns(Fixed27 memory tokenPrice);
    function calcJuniorTokenPrice(uint NAV, uint reserve) external returns(Fixed27 memory tokenPrice);

    // get state
    function maxReserve() external view returns(uint);
    function calcUpdateNAV() external returns (uint);
    function seniorDebt() external returns(uint);
    function seniorBalance() external returns(uint);
    function seniorRatioBounds() external view returns(Fixed27 memory minSeniorRatio, Fixed27 memory maxSeniorRatio);

    function totalBalance() external returns(uint);
    // change state
    function changeBorrowAmountEpoch(uint currencyAmount) public;
    function changeSeniorAsset(uint seniorSupply, uint seniorRedeem) external;
    function changeSeniorAsset(uint seniorRatio, uint seniorSupply, uint seniorRedeem) external;
}
function maxReserve() external view returns(uint);

// get state