mod infer_call_generic;
mod instantiate_type;
mod test;
mod tpl_context;
mod tpl_pattern;
mod type_substitutor;
mod widening;

pub use infer_call_generic::{build_call_generic_substitutor, infer_call_generic};
pub(crate) use infer_call_generic::{instantiate_call_self_type, resolve_call_self_type};
pub use instantiate_type::get_keyof_members;
pub use instantiate_type::*;
pub use tpl_context::TplContext;
pub use tpl_pattern::tpl_pattern_match_args;
pub use tpl_pattern::tpl_pattern_match_args_skip_unknown;
pub use type_substitutor::{GenericResolveMode, TypeSubstitutor};
