sig
  val layout_type : 'Record.layout -> 'Record.t Record.Type.t
  val declare0 : name:string -> 'Record.layout
  val declare1 :
    name:string ->
    f1_name:string ->
    f1_type:'Record.Type.t -> 'Record.layout * ('a, 's) Record.Field.t
  val declare2 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    'Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t
  val declare3 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    f3_name:string ->
    f3_type:'a3 Record.Type.t ->
    'Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t *
    ('a3, 's) Record.Field.t
  val declare4 :
    name:string ->
    f1_name:string ->
    f1_type:'a1 Record.Type.t ->
    f2_name:string ->
    f2_type:'a2 Record.Type.t ->
    f3_name:string ->
    f3_type:'a3 Record.Type.t ->
    f4_name:string ->
    f4_type:'a4 Record.Type.t ->
    'Record.layout * ('a1, 's) Record.Field.t * ('a2, 's) Record.Field.t *
    ('a3, 's) Record.Field.t * ('a4, 's) Record.Field.t
end