-module(gwr@syntax@module). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export_type([module_/0, function_/0, table/0, memory/0, global/0, element_segment_mode/0, element_segment/0, data_segment_mode/0, data_segment/0, start_function/0, import_descriptor/0, import/0, export_descriptor/0, export/0]). -type module_() :: {module, list(gwr@syntax@types:function_type()), list(function_()), list(table()), list(memory()), list(global()), list(element_segment()), list(data_segment()), gleam@option:option(start_function()), list(import()), list(export())}. -type function_() :: {function, integer(), list(gwr@syntax@types:value_type()), list(gwr@syntax@instruction:instruction())}. -type table() :: {table, gwr@syntax@types:table_type()}. -type memory() :: {memory, gwr@syntax@types:limits()}. -type global() :: {global, gwr@syntax@types:global_type(), list(gwr@syntax@instruction:instruction())}. -type element_segment_mode() :: passive_element_segment | {active_element_segment, integer(), list(gwr@syntax@instruction:instruction())} | declarative_element_segment. -type element_segment() :: {element_segment, gwr@syntax@types:reference_type(), list(list(gwr@syntax@instruction:instruction())), element_segment_mode()}. -type data_segment_mode() :: passive_data_segment | {active_data_segment, integer(), list(gwr@syntax@instruction:instruction())}. -type data_segment() :: {data_segment, bitstring(), data_segment_mode()}. -type start_function() :: {start_function, integer()}. -type import_descriptor() :: {function_import, integer()} | {table_import, gwr@syntax@types:table_type()} | {memory_import, gwr@syntax@types:limits()} | {global_import, gwr@syntax@types:global_type()}. -type import() :: {import, binary(), binary(), import_descriptor()}. -type export_descriptor() :: {function_export, integer()} | {table_export, integer()} | {memory_export, integer()} | {global_export, integer()}. -type export() :: {export, binary(), export_descriptor()}.