return"\108\111\099\097\108 \077\097\116\116\101\114 \061 \114\101\113\117\105\114\101\040\037\115\041\n\n\116\121\112\101 \067\111\110\110\101\099\116\105\111\110\079\098\106\101\099\116 \061\n\t\123 \068\105\115\099\111\110\110\101\099\116\058 \040\041 -\062 \040\041 \125\n\t\124 \123 \068\101\115\116\114\111\121\058 \040\041 -\062 \040\041 \125\n\t\124 \123 \100\105\115\099\111\110\110\101\099\116\058 \040\041 -\062 \040\041 \125\n\t\124 \123 \100\101\115\116\114\111\121\058 \040\041 -\062 \040\041 \125\n\t\124 \040\041 -\062 \040\041\n\n\116\121\112\101 \067\117\115\116\111\109\069\118\101\110\116 \061\n\t\123 \067\111\110\110\101\099\116\058 \060\084\046\046\046\062\040\084\046\046\046\041 -\062 \067\111\110\110\101\099\116\105\111\110\079\098\106\101\099\116 \125\n\t\124 \123 \099\111\110\110\101\099\116\058 \060\084\046\046\046\062\040\084\046\046\046\041 -\062 \067\111\110\110\101\099\116\105\111\110\079\098\106\101\099\116 \125\n\t\124 \123 \111\110\058 \060\084\046\046\046\062\040\084\046\046\046\041 -\062 \067\111\110\110\101\099\116\105\111\110\079\098\106\101\099\116 \125\n\n\116\121\112\101 \079\118\101\114\114\105\100\101\115 \061 \123\n\t\099\111\109\112\111\110\101\110\116\058 \060\084\062\040\110\097\109\101\058 \115\116\114\105\110\103\044 \100\101\102\097\117\108\116\068\097\116\097\058 \040\084 \038 \123\125\041\063\041 -\062 \067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\108\111\103\058 \040\046\046\046\097\110\121\041 -\062 \040\041\044\n\t\117\115\101\069\118\101\110\116\058 \060\084\046\046\046\062\040\n\t\t\105\110\115\116\097\110\099\101\058 \073\110\115\116\097\110\099\101 \124 \123 \091\115\116\114\105\110\103\093\058 \067\117\115\116\111\109\069\118\101\110\116 \125 \124 \067\117\115\116\111\109\069\118\101\110\116\044\n\t\t\101\118\101\110\116\058 \115\116\114\105\110\103 \124 \082\066\088\083\099\114\105\112\116\083\105\103\110\097\108\060\084\046\046\046\062 \124 \067\117\115\116\111\109\069\118\101\110\116\n\t\041 -\062 \040\041 -\062 \040\110\117\109\098\101\114\044 \084\046\046\046\041\044\n\t\117\115\101\072\111\111\107\083\116\097\116\101\058 \060\084\062\040\n\t\t\100\105\115\099\114\105\109\105\110\097\116\111\114\058 \097\110\121\063\044\n\t\t\099\108\101\097\110\117\112\067\097\108\108\098\097\099\107\058 \040\115\116\111\114\097\103\101\058 \084 \038 \123\125\041 -\062 \098\111\111\108\101\097\110\n\t\041 -\062 \084 \038 \123\125\044\n\t\117\115\101\084\104\114\111\116\116\108\101\058 \040\115\101\099\111\110\100\115\058 \110\117\109\098\101\114\044 \100\105\115\099\114\105\109\105\110\097\116\111\114\058 \097\110\121\063\041 -\062 \098\111\111\108\101\097\110\044\n\t\068\101\098\117\103\103\101\114\058 \116\121\112\101\111\102\040\077\097\116\116\101\114\046\068\101\098\117\103\103\101\114\041\044\n\t\078\111\110\101\058 \116\121\112\101\111\102\040\077\097\116\116\101\114\046\078\111\110\101\041\044\n\t\076\111\111\112\058 \116\121\112\101\111\102\040\077\097\116\116\101\114\046\076\111\111\112\041\044\n\t\087\111\114\108\100\058 \087\111\114\108\100\044\n\125\n\n\101\120\112\111\114\116 \116\121\112\101 \067\111\109\112\111\110\101\110\116\060\084\062 \061 \040\105\110\105\116\105\097\108\068\097\116\097\058 \084\063\041 -\062 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\n\n-- \084\079\068\079\058 \065\100\100 \098\101\108\111\119 \109\101\116\097\116\097\098\108\101 \116\111 \116\104\105\115 \119\104\101\110 \105\116 \119\111\114\107\115 \098\101\116\116\101\114\n--\101\120\112\111\114\116 \116\121\112\101 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062 \061 \084\n\n\101\120\112\111\114\116 \116\121\112\101 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062 \061 \116\121\112\101\111\102\040\115\101\116\109\101\116\097\116\097\098\108\101\040\n\t\123\125 \058\058 \123\n\t\t-- \076\117\097\117 \100\111\101\115 \110\111\116 \115\117\112\112\111\114\116 \112\097\114\116\105\097\108 \116\121\112\101\115\044 \115\111 \119\101 \104\097\118\101 \116\111 \117\115\101 \097\110\121\n\t\t\112\097\116\099\104\058 \040\n\t\t\t\115\101\108\102\058 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044\n\t\t\t\099\104\097\110\103\101\115\058 \097\110\121\n\t\t\041 -\062 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044\n\t\125\044\n\t\123\125 \058\058 \123\n\t\t\095\095\105\110\100\101\120\058 \084\044\n\t\125\n\041\041\n\n-- \070\085\084\085\082\069\058 \073\109\112\114\111\118\101 \097\098\111\118\101 \116\121\112\101 \097\110\100 \097\100\100 \116\104\105\115 \112\097\116\099\104 \109\101\116\104\111\100 \119\104\101\110\n-- \116\121\112\101\111\102\040\115\101\116\109\101\116\097\116\097\098\108\101\040\041\041 \119\111\114\107\115 \098\101\116\116\101\114 \119\105\116\104 \103\101\110\101\114\105\099 \097\114\103\115\044\n-- \114\105\103\104\116 \110\111\119 \097 \114\101\099\117\114\115\105\118\101 \116\121\112\101 \115\117\099\104 \097\115 \116\104\105\115 \097\108\115\111 \115\101\101\109\115\n-- \116\111 \098\114\101\097\107 \097 \108\111\116 \111\102 \116\111\111\108\105\110\103 \115\117\099\104 \097\115 \108\117\097\117-\108\115\112\n-- \116\121\112\101 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\077\101\116\097\060\084\062 \061 \123\n-- \t\112\097\116\099\104\058 \040\115\101\108\102\058 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044 \099\104\097\110\103\101\115\058 \084\041 -\062 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044\n-- \125\n\n\116\121\112\101 \083\121\115\116\101\109\070\110 \061 \040\087\111\114\108\100\044 \046\046\046\097\110\121\041 -\062 \040\041\n\n\116\121\112\101 \083\121\115\116\101\109\084\097\098\108\101 \061 \123\n\t\115\121\115\116\101\109\058 \083\121\115\116\101\109\070\110\044\n\t\101\118\101\110\116\058 \115\116\114\105\110\103\063\044\n\t\112\114\105\111\114\105\116\121\058 \110\117\109\098\101\114\063\044\n\t\097\102\116\101\114\058 \123 \083\121\115\116\101\109 \125\063\044\n\125\n\n\101\120\112\111\114\116 \116\121\112\101 \083\121\115\116\101\109 \061 \083\121\115\116\101\109\070\110 \124 \083\121\115\116\101\109\084\097\098\108\101\n\n\116\121\112\101 \087\111\114\108\100\067\104\097\110\103\101\082\101\099\111\114\100\060\084\062 \061 \123\n\t\111\108\100\058 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\063\044\n\t\110\101\119\058 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\063\044\n\125\n\n\116\121\112\101 \087\111\114\108\100\071\101\116\079\114\082\101\109\111\118\101 \061\n\t\040\060\084\062\040\115\101\108\102\058 \087\111\114\108\100\044 \105\100\058 \110\117\109\098\101\114\044 \067\111\109\112\111\110\101\110\116\060\084\062\041 -\062 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\041\n\t\038 \040\060\084\044 \085\062\040\n\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\105\100\058 \110\117\109\098\101\114\044\n\t\t\067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\085\062\n\t\041 -\062 \040\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\085\062\041\041\n\t\038 \040\060\084\044 \085\044 \086\062\040\n\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\105\100\058 \110\117\109\098\101\114\044\n\t\t\067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\085\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\086\062\044\n\t\t\046\046\046\097\110\121\n\t\041 -\062 \040\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\085\062\044 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\086\062\041\041\n\n\116\121\112\101 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062 \061 \116\121\112\101\111\102\040\115\101\116\109\101\116\097\116\097\098\108\101\040\n\t\123\125\044\n\t\123\125 \058\058 \123\n\t\t\095\095\105\116\101\114\058 \040\115\101\108\102\058 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\041 -\062 \040\040\041 -\062 \040\110\117\109\098\101\114\044 \084\046\046\046\041\041\044\n\t\t\095\095\105\110\100\101\120\058 \123\n\t\t\t\119\105\116\104\111\117\116\058 \040\n\t\t\t\t\115\101\108\102\058 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\044\n\t\t\t\t\046\046\046\097\110\121\n\t\t\t\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\044\n\t\t\t\115\110\097\112\115\104\111\116\058 \040\115\101\108\102\058 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\044\n\t\t\t\110\101\120\116\058 \040\115\101\108\102\058 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\084\046\046\046\062\041 -\062 \040\110\117\109\098\101\114\044 \084\046\046\046\041\044\n\t\t\125\044\n\t\125\n\041\041\n\n-- \078\079\084\069\058 \087\101 \100\111\110\'\116 \117\115\101 \109\111\114\101 \116\104\097\110 \052 \103\101\110\101\114\105\099\115 \104\101\114\101 \115\105\110\099\101 \116\104\097\116\n-- \115\101\101\109\115 \116\111 \099\117\114\114\101\110\116\108\121 \108\101\097\100 \116\111 \115\111\109\101 \112\101\114\102\111\114\109\097\110\099\101 \105\115\115\117\101\115\n\116\121\112\101 \087\111\114\108\100\081\117\101\114\121 \061\n\t\040\060\084\062\040\115\101\108\102\058 \087\111\114\108\100\044 \067\111\109\112\111\110\101\110\116\060\084\062\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\062\041\n\t\038 \040\060\084\044 \085\062\040\n\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\085\062\n\t\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\085\062\062\041\n\t\038 \040\060\084\044 \085\044 \086\062\040\n\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\085\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\086\062\n\t\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\085\062\044\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\086\062\n\t\062\041\n\t\038 \040\060\084\044 \085\044 \086\044 \087\062\040\n\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\067\111\109\112\111\110\101\110\116\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\085\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\086\062\044\n\t\t\067\111\109\112\111\110\101\110\116\060\087\062\044\n\t\t\046\046\046\097\110\121\n\t\041 -\062 \087\111\114\108\100\081\117\101\114\121\082\101\115\117\108\116\060\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\084\062\044\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\085\062\044\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\086\062\044\n\t\t\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\087\062\n\t\062\041\n\n\116\121\112\101 \087\111\114\108\100\081\117\101\114\121\067\104\097\110\103\101\100 \061 \060\084\062\040\n\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\067\111\109\112\111\110\101\110\116\060\084\062\n\041 -\062 \040\040\041 -\062 \040\110\117\109\098\101\114\044 \087\111\114\108\100\067\104\097\110\103\101\082\101\099\111\114\100\060\084\062\041\041\n\n\101\120\112\111\114\116 \116\121\112\101 \087\111\114\108\100 \061 \116\121\112\101\111\102\040\115\101\116\109\101\116\097\116\097\098\108\101\040\n\t\123\125\044\n\t\123\125 \058\058 \123\n\t\t\095\095\105\116\101\114\058 \040\n\t\t\t\115\101\108\102\058 \087\111\114\108\100\n\t\t\041 -\062 \040\040\041 -\062 \040\110\117\109\098\101\114\044 \123 \091\097\110\121\093\058 \067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\097\110\121\062 \125\041\044 \097\110\121\041\044\n\t\t\095\095\105\110\100\101\120\058 \123\n\t\t\t\099\108\101\097\114\058 \040\115\101\108\102\058 \087\111\114\108\100\041 -\062 \040\041\044\n\t\t\t\099\111\110\116\097\105\110\115\058 \040\115\101\108\102\058 \087\111\114\108\100\044 \105\100\058 \110\117\109\098\101\114\041 -\062 \098\111\111\108\101\097\110\044\n\t\t\t\100\101\115\112\097\119\110\058 \040\115\101\108\102\058 \087\111\114\108\100\044 \105\100\058 \110\117\109\098\101\114\041 -\062 \040\041\044\n\t\t\t\103\101\116\058 \087\111\114\108\100\071\101\116\079\114\082\101\109\111\118\101\044\n\t\t\t\105\110\115\101\114\116\058 \040\115\101\108\102\058 \087\111\114\108\100\044 \105\100\058 \110\117\109\098\101\114\044 \046\046\046\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\097\110\121\062\041 -\062 \040\041\044\n\t\t\t\111\112\116\105\109\105\122\101\081\117\101\114\105\101\115\058 \040\115\101\108\102\058 \087\111\114\108\100\041 -\062 \040\041\044\n\t\t\t\113\117\101\114\121\058 \087\111\114\108\100\081\117\101\114\121\044\n\t\t\t\113\117\101\114\121\067\104\097\110\103\101\100\058 \087\111\114\108\100\081\117\101\114\121\067\104\097\110\103\101\100\044\n\t\t\t\114\101\109\111\118\101\058 \087\111\114\108\100\071\101\116\079\114\082\101\109\111\118\101\044\n\t\t\t\114\101\112\108\097\099\101\058 \040\115\101\108\102\058 \087\111\114\108\100\044 \105\100\058 \110\117\109\098\101\114\044 \046\046\046\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\097\110\121\062\041 -\062 \040\041\044\n\t\t\t\115\105\122\101\058 \040\115\101\108\102\058 \087\111\114\108\100\041 -\062 \110\117\109\098\101\114\044\n\t\t\t\115\112\097\119\110\058 \040\115\101\108\102\058 \087\111\114\108\100\044 \046\046\046\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\097\110\121\062\041 -\062 \110\117\109\098\101\114\044\n\t\t\t\115\112\097\119\110\065\116\058 \040\n\t\t\t\t\115\101\108\102\058 \087\111\114\108\100\044\n\t\t\t\t\105\100\058 \110\117\109\098\101\114\044\n\t\t\t\t\046\046\046\067\111\109\112\111\110\101\110\116\073\110\115\116\097\110\099\101\060\097\110\121\062\n\t\t\t\041 -\062 \110\117\109\098\101\114\044\n\t\t\t\110\101\119\058 \040\041 -\062 \087\111\114\108\100\044\n\t\t\125\044\n\t\125\n\041\041\n\n\114\101\116\117\114\110 \040\077\097\116\116\101\114 \058\058 \097\110\121\041 \058\058 \079\118\101\114\114\105\100\101\115\n"
return [[
local Matter = require(%s)

type ConnectionObject =
	{ Disconnect: () -> () }
	| { Destroy: () -> () }
	| { disconnect: () -> () }
	| { destroy: () -> () }
	| () -> ()

type CustomEvent =
	{ Connect: <T...>(T...) -> ConnectionObject }
	| { connect: <T...>(T...) -> ConnectionObject }
	| { on: <T...>(T...) -> ConnectionObject }

type Overrides = {
	component: <T>(name: string, defaultData: (T & {})?) -> Component<T>,
	log: (...any) -> (),
	useEvent: <T...>(
		instance: Instance | { [string]: CustomEvent } | CustomEvent,
		event: string | RBXScriptSignal<T...> | CustomEvent
	) -> () -> (number, T...),
	useHookState: <T>(
		discriminator: any?,
		cleanupCallback: (storage: T & {}) -> boolean
	) -> T & {},
	useThrottle: (seconds: number, discriminator: any?) -> boolean,
	Debugger: typeof(Matter.Debugger),
	None: typeof(Matter.None),
	Loop: typeof(Matter.Loop),
	World: World,
}

export type Component<T> = (initialData: T?) -> ComponentInstance<T>

-- TODO: Add below metatable to this when it works better
--export type ComponentInstance<T> = T

export type ComponentInstance<T> = typeof(setmetatable(
	{} :: {
		-- Luau does not support partial types, so we have to use any
		patch: (
			self: ComponentInstance<T>,
			changes: any
		) -> ComponentInstance<T>,
	},
	{} :: {
		__index: T,
	}
))

-- FUTURE: Improve above type and add this patch method when
-- typeof(setmetatable()) works better with generic args,
-- right now a recursive type such as this also seems
-- to break a lot of tooling such as luau-lsp
-- type ComponentInstanceMeta<T> = {
-- 	patch: (self: ComponentInstance<T>, changes: T) -> ComponentInstance<T>,
-- }

type SystemFn = (World, ...any) -> ()

type SystemTable = {
	system: SystemFn,
	event: string?,
	priority: number?,
	after: { System }?,
}

export type System = SystemFn | SystemTable

type WorldChangeRecord<T> = {
	old: ComponentInstance<T>?,
	new: ComponentInstance<T>?,
}

type WorldGetOrRemove =
	(<T>(self: World, id: number, Component<T>) -> ComponentInstance<T>)
	& (<T, U>(
		self: World,
		id: number,
		Component<T>,
		Component<U>
	) -> (ComponentInstance<T>, ComponentInstance<U>))
	& (<T, U, V>(
		self: World,
		id: number,
		Component<T>,
		Component<U>,
		Component<V>,
		...any
	) -> (ComponentInstance<T>, ComponentInstance<U>, ComponentInstance<V>))

type WorldQueryResult<T...> = typeof(setmetatable(
	{},
	{} :: {
		__iter: (self: WorldQueryResult<T...>) -> (() -> (number, T...)),
		__index: {
			without: (
				self: WorldQueryResult<T...>,
				...any
			) -> WorldQueryResult<T...>,
			snapshot: (self: WorldQueryResult<T...>) -> WorldQueryResult<T...>,
			next: (self: WorldQueryResult<T...>) -> (number, T...),
		},
	}
))

-- NOTE: We don't use more than 4 generics here since that
-- seems to currently lead to some performance issues
type WorldQuery =
	(<T>(self: World, Component<T>) -> WorldQueryResult<ComponentInstance<T>>)
	& (<T, U>(
		self: World,
		Component<T>,
		Component<U>
	) -> WorldQueryResult<ComponentInstance<T>, ComponentInstance<U>>)
	& (<T, U, V>(
		self: World,
		Component<T>,
		Component<U>,
		Component<V>
	) -> WorldQueryResult<
		ComponentInstance<T>,
		ComponentInstance<U>,
		ComponentInstance<V>
	>)
	& (<T, U, V, W>(
		self: World,
		Component<T>,
		Component<U>,
		Component<V>,
		Component<W>,
		...any
	) -> WorldQueryResult<
		ComponentInstance<T>,
		ComponentInstance<U>,
		ComponentInstance<V>,
		ComponentInstance<W>
	>)

type WorldQueryChanged = <T>(
	self: World,
	Component<T>
) -> (() -> (number, WorldChangeRecord<T>))

export type World = typeof(setmetatable(
	{},
	{} :: {
		__iter: (
			self: World
		) -> (() -> (number, { [any]: ComponentInstance<any> }), any),
		__index: {
			clear: (self: World) -> (),
			contains: (self: World, id: number) -> boolean,
			despawn: (self: World, id: number) -> (),
			get: WorldGetOrRemove,
			insert: (self: World, id: number, ...ComponentInstance<any>) -> (),
			optimizeQueries: (self: World) -> (),
			query: WorldQuery,
			queryChanged: WorldQueryChanged,
			remove: WorldGetOrRemove,
			replace: (self: World, id: number, ...ComponentInstance<any>) -> (),
			size: (self: World) -> number,
			spawn: (self: World, ...ComponentInstance<any>) -> number,
			spawnAt: (
				self: World,
				id: number,
				...ComponentInstance<any>
			) -> number,
			new: () -> World,
		},
	}
))

return (Matter :: any) :: Overrides
]]
