@@jsxConfig({version: 4})

module V4A = {
  @res.jsxComponentProps
  type props<'a, 'b, 'c> = {
    a: 'a,
    b: 'b,
    c: 'c,
  }

  let make = (type a, {a, b, c, _}: props<a, array<option<[#Foo(a)]>>, 'a>): React.element =>
    ReactDOM.jsx("div", {})
  let make = {
    let \"Newtype$V4A" = (props: props<_>) => make(props)

    \"Newtype$V4A"
  }
}

module V4A1 = {
  @res.jsxComponentProps
  type props<'a, 'b, 'c> = {
    a: 'a,
    b: 'b,
    c: 'c,
  }

  let make = (type x y, {a, b, c, _}: props<x, array<y>, 'a>): React.element =>
    ReactDOM.jsx("div", {})
  let make = {
    let \"Newtype$V4A1" = (props: props<_>) => make(props)

    \"Newtype$V4A1"
  }
}

module type T = {
  type t
}

module V4A2 = {
  @res.jsxComponentProps
  type props<'foo> = {
    foo: 'foo,
  }

  let make = (type a, {foo: (foo: module(T with type t = a)), _}: props<_>): React.element => {
    module T = unpack(foo)
    ReactDOM.jsx("div", {})
  }
  let make = {
    let \"Newtype$V4A2" = (props: props<_>) => make(props)

    \"Newtype$V4A2"
  }
}

module V4A3 = {
  @res.jsxComponentProps
  type props<'foo> = {
    foo: 'foo,
  }

  let make = (type a, {foo, _}: props<_>): React.element => {
    module T = unpack(foo: T with type t = a)
    foo
  }
  let make = {
    let \"Newtype$V4A3" = (props: props<_>) => make(props)

    \"Newtype$V4A3"
  }
}
@res.jsxComponentProps
type props<'x, 'q> = {
  x: 'x,
  q: 'q,
}

let make = ({x, q, _}: props<('a, 'b), 'a>): React.element => [fst(x), q]
let make = {
  let \"Newtype" = (props: props<_>) => make(props)

  \"Newtype"
}

@@uncurried

module Uncurried = {
  @res.jsxComponentProps
  type props<'foo> = {
    foo?: 'foo,
  }

  let make = (type a, {?foo, _}: props<_>): React.element => React.null
  let make = {
    let \"Newtype$Uncurried" = (props: props<_>) => make(props)

    \"Newtype$Uncurried"
  }
}
