-- | Description: exports most things you should need 
--
-- This module exports most things you should need.
-- Also take a look at "Ipopt.NLP" and "Ipopt.Raw" and @examples/@
module Ipopt (
  -- * high-level
  NLPT, nlpstate0,
  module Control.Monad.State,
  solveNLP',
  -- ** variables
  var', var, varFresh,
  AnyRF(..),
  -- ** functions
  addG, addF,
  -- * low-level bits still needed
  IpOptSolved(..),
  ApplicationReturnStatus(..),

  -- ** solver options
  -- $solverOptRef
  addIpoptNumOption,
  addIpoptStrOption, 
  addIpoptIntOption,
  setIpoptProblemScaling,
  openIpoptOutputFile,

  -- *** types
  Vec, IpNumber,
) where

import Ipopt.NLP
import Ipopt.Raw
import Control.Monad.State

-- $solverOptRef
-- see <http://www.coin-or.org/Ipopt/documentation/node39.html ipopt's options reference>