import * as React from 'react'
import { observer } from 'mobx-react'

export default function<M>(Wrapped: React.ComponentClass<M> | React.SFC<M>) {

  @observer
  class MobxWrapper extends React.Component<{ model: M }, void> {
    render() {
      return React.createElement(Wrapped, this.props.model)
    }
  }

  return MobxWrapper as React.ComponentClass<{ model: M }>
}

import * as React from 'react'
import { observer } from 'mobx-react'

export default function<M>(Wrapped: React.ComponentClass<M> | React.StatelessComponent<M>) {

  @observer
  class MobxWrapper extends React.Component<{ model: M }, void> {
    render() {
      return React.createElement(observer(Wrapped as any), this.props.model)
    }
  }

  return MobxWrapper as React.ComponentClass<{ model: M }>
}

Fix failing to observe wrapped component
Fix failing to observe wrapped component
