///|
using @binary {decode_module, decode_module_with_detail, encode_module}

///|
using @binary_fuzz {type BinaryRoundtripFuzzStats, run_binary_roundtrip_fuzz}

///|
using @lib {trace_elapsed_ms, trace_now_ms, trace_now_us}

///|
using @validate {
  type GenValidConfig,
  type GenValidFeatureFacts,
  type GenValidFeatureStats,
  type GenValidMode,
  type GenValidProfile,
  type ValidateInvalidAstFuzzStats,
  type ValidateValidFeatureFloor,
  type ValidateValidFeatureFloorFailure,
  type ValidateValidFeatureKey,
  type ValidateValidFuzzStats,
  gen_invalid_named_seed_profile_name,
  gen_valid_config_label,
  gen_valid_code_folding_profile_case_label,
  gen_valid_dae_optimizing_profile_case_label,
  gen_valid_directize_profile_case_label,
  gen_valid_derive_stream_seed,
  gen_valid_duplicate_import_elimination_profile_case_label,
  gen_valid_flatten_profile_case_label,
  gen_valid_module_result,
  gen_valid_module_result_from_seed,
  gen_valid_module_with_config,
  gen_valid_inlining_optimizing_profile_case_label,
  gen_valid_heap_store_optimization_profile_case_label,
  gen_valid_merge_blocks_profile_case_label,
  gen_valid_rume_profile_case_label,
  gen_valid_reorder_globals_profile_case_label,
  gen_valid_ssa_full_profile_case_label,
  gen_valid_merge_locals_profile_case_label,
  gen_valid_memory_packing_profile_case_label,
  gen_valid_msf_profile_case_label,
  gen_valid_oi_trigger_profile_case_label,
  gen_valid_tuple_optimization_trigger_profile_case_label,
  gen_valid_undersampled_pass_profile_case_label,
  gen_valid_profile_by_name,
  gen_valid_profile_is_composite,
  gen_valid_profile_leaf_for_case,
  gen_valid_profile_name,
  gen_valid_random_stream_label_name,
  gen_valid_random_stream_labels,
  run_validate_invalid_ast_fuzz,
  run_validate_valid_fuzz,
  validate_valid_feature_actual_count,
  validate_valid_feature_floor_by_label,
  validate_valid_run_config,
  check_validate_valid_feature_floors,
  validate_module,
  validation_error_message,
}

///|
using @fs {create_dir, list_files_recursive, read_file_sync, write_file_bytes}

///|
using @wast {
  type ModuleField,
  type WastCommand,
  type WastStaticAssertionResult,
  type WastStaticAssertionStage,
  evaluate_wast_static_assertion,
  module_to_wast,
  run_wast_roundtrip_fuzz,
  wast_ast_to_binary_module,
  wast_to_module,
  wast_to_script,
}

///|
using @wat {
  type WatRoundtripFuzzStats,
  lib_module_to_wat,
  run_wat_roundtrip_fuzz,
}

///|
using @quickcheck {trait Arbitrary}