interface iNeortVessel {

    function maxMintableTokenId() external view returns (uint256);

    function remainingAmountForPromotion() external view returns (uint256);

    function remainingAmountForSale() external view returns (uint256);

    function isOnSale() external view returns (bool);

    function mintedSalesTokenIdList(
        uint256 offset,
        uint256 limit
    ) external view returns (uint256[] memory);

    function buy(uint256 tokenId) external payable;

    function buyBundle(uint256[] memory tokenIdList) external payable;

    // functions for admin

    function setOnSale(bool _isOnSale) external;

    function updateBaseURI(string calldata newBaseURI) external;

    function freezeMetadata() external;

    function mintForPromotion(
        address to,
        uint256 amount
    ) external;

    function updateMaxMintableTokenId(uint256 _maxMintableTokenId) external;

    function withdrawETH() external;
}
function setOnSale(bool _isOnSale) external;

// functions for admin