// The surface moonctl had before it was split into packages, re-exported from
// where each name now lives, so `@moonctl.parse` and the rest keep working.

///|
pub using @template {
  type FuncFn,
  type Template,
  type TemplateError,
  type Value,
  render,
}

///|
pub using @style {type Style, type StyleError}

///|
pub using @api {
  type Bind,
  type Field,
  type Group,
  type Range,
  type Route,
  type Spec,
  type SpecError,
  type TypeDef,
  type Diagnostic,
  type Severity,
  deps,
  format,
  has_errors,
  parse,
  parse_all,
  parse_lenient,
  resolve_import,
  validate,
  validate_files,
  validate_source,
}

///|
pub using @client {type Lang, client_file, client_file_name, generate_client}

///|
pub using @cli {
  type Command,
  type Config,
  type TemplateEntry,
  bug_report,
  command_names,
  commands,
  completion,
  config_get,
  config_keys,
  config_set,
  config_text,
  default_config,
  env_report,
  find_template,
  migrate_config,
  mod_pins,
  parse_config,
  pin_module,
  pinned_version,
  subcommands,
  template_detail,
  template_table,
  templates,
  templates_of,
  upgrade_pins,
  usage_text,
}

///|
pub using @gen {generate, generate_with, spec_to_value}

///|
pub using @proto {
  type Proto,
  type ProtoEnum,
  type ProtoEnumValue,
  type Label,
  type ProtoField,
  type ProtoMessage,
  type ProtoOneof,
  type ProtoService,
  type GatewayRoute,
  type Rpc,
  default_routes,
  gateway_file_name,
  generate_gateway,
  generate_grpc,
  has_method,
  parse_proto,
  parse_route_map,
  proto_reserved_conflicts,
}

///|
pub using @doc {
  type DocVersion,
  generate_doc,
  generate_markdown,
  markdown_file_name,
  openapi_document,
  swagger_ui_stub,
}

///|
pub using @gql {generate_gql}

///|
pub using @model {
  type DataSource,
  type DataSourceError,
  type DdlColumn,
  type DdlTable,
  type PgTarget,
  type ReflectedColumn,
  generate_crud,
  generate_crud_from_ddl,
  generate_cached,
  generate_crud_from_reflection,
  generate_migrations,
  generate_mongo,
  generate_model,
  cache_file_name,
  migrate_file_name,
  mongo_file_name,
  parse_ddl,
  parse_dsn,
  tables_from_reflection,
}

///|
pub using @plugin {
  type GenFile,
  type Plugin,
  gen_files_to_json,
  parse_gen_files,
  plugin_argv,
  plugin_plan,
  plugin_from_json,
  plugin_request,
  safe_path,
  spec_from_json,
  spec_to_json,
}

///|
pub using @agent {generate_agent}

///|
pub using @scaffold {
  type Regen,
  type TreeFile,
  generate_gql_tree,
  generate_mcp_tree,
  generate_rpc_tree,
  generate_tree,
  pins,
  port,
  scaffold_api,
  scaffold_docker,
  scaffold_gql,
  scaffold_mcp,
  scaffold_kube,
  scaffold_model,
  scaffold_rpc,
  tree_plan,
}