package context

// terraformEquivalenceClasses returns equivalence classes for terraform.
func terraformEquivalenceClasses() []EquivalenceClass {
	return []EquivalenceClass{
		{
		Concept:    "TF_PROVIDER",
		Phrases:    []string{"custom provider", "provider plugin", "provider schema", "provider configuration", "crud lifecycle"},
		Targets:    []string{"Interface", "GetProviderSchemaResponse", "ReadResourceResponse", "PlanResourceChangeResponse", "ApplyResourceChangeResponse", "Block", "GRPCProvider"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_STATE",
		Phrases:    []string{"terraform state", "state file", "state locking", "state manager", "state storage", "state backend", "lock state", "state corruption"},
		Targets:    []string{"State", "StateManager", "Locker", "Backend", "StateMeta", "LineageState", "statemgr", "LockInfo", "NewLockInfo", "StateLockError"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_GRAPH",
		Phrases:    []string{"dependency graph", "graph transformer", "graph walk", "execution order", "destroy order", "apply graph"},
		Targets:    []string{"Graph", "GraphTransformer", "DestroyEdgeTransformer", "AcyclicGraph", "TransitiveReduction", "ReferenceTransformer", "GraphWalker"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_PLAN",
		Phrases:    []string{"terraform plan", "plan computation", "resource diff", "plan graph", "planned change", "unexpected diff", "value normalization"},
		Targets:    []string{"Plan", "PlanResourceChangeResponse", "NodePlannableResource", "DiffTransformer", "PlanGraphBuilder", "Context.PlanAndEval", "ResourceInstanceChangeSrc", "Changes", "NodePlannableResourceInstance"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_MODULE",
		Phrases:    []string{"module source", "module resolution", "module download", "module installer", "root module"},
		Targets:    []string{"Config", "Module", "Parser", "ModuleInstaller", "InstallModules", "Manifest", "PackageFetcher"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_CLI",
		Phrases:    []string{"cli command", "terraform command", "command flag", "command output"},
		Targets:    []string{"Command", "Meta", "RunningCommand", "CommandFactory", "HelpFunc"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_PLAN_APPLY",
		Phrases:    []string{"plan", "apply", "destroy", "refresh", "terraform plan", "terraform apply"},
		Targets:    []string{"PlanCommand", "ApplyCommand", "Operation", "ParseApply", "ParsePlan", "LoadPlanFile"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_RESOURCE",
		Phrases:    []string{"resource", "resource type", "resource instance", "resource address", "managed resource"},
		Targets:    []string{"Resource", "AbsResource", "AbsResourceInstance", "ResourceMode", "ManagedResourceMode", "ConfigResource"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_CONFIG",
		Phrases:    []string{"configuration", "hcl", "config file", "config loader", "terraform block"},
		Targets:    []string{"Config", "Module", "Loader", "Parser", "LoadConfig", "BuildConfig", "ModuleWalker"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_VARIABLE",
		Phrases:    []string{"variable", "input variable", "output", "output value", "local value"},
		Targets:    []string{"InputVariable", "OutputValue", "LocalValue", "AbsInputVariableInstance", "OutputCommand"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_PROVISIONER",
		Phrases:    []string{"provisioner", "remote exec", "local exec", "file provisioner"},
		Targets:    []string{"Provisioner", "NodeResourceProvisioner", "ResourceProvisioner"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_FORMAT",
		Phrases:    []string{"fmt", "format", "terraform fmt", "formatting", "hcl format"},
		Targets:    []string{"FmtCommand", "fmtcmd", "FormatCommand"},
		TargetType: "symbol",
		Weight:     0.8,
		Source:     "language",
		},
		{
		Concept:    "TF_APPLY",
		Phrases:    []string{"terraform apply", "apply fails", "apply graph", "eval context", "resource creation"},
		Targets:    []string{"Context.ApplyAndEval", "Context.walk", "BuiltinEvalContext", "NodeApplyableResourceInstance", "NodeApplyableResourceInstance.Execute", "ContextGraphWalker", "ApplyCommand"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_IMPORT",
		Phrases:    []string{"terraform import", "import resource", "import command", "import existing"},
		Targets:    []string{"ImportCommand", "ImportCommand.Run", "ImportOpts", "ResourceInstanceObject", "ImportResourceStateResponse"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_DRIFT",
		Phrases:    []string{"drift detection", "cloud resource state", "expected state", "actual state", "read resource"},
		Targets:    []string{"ResourceInstanceObject", "ReadResourceResponse", "Action", "NodeResourceRefresh"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_GRPC",
		Phrases:    []string{"grpc plugin", "plugin protocol", "provider plugin", "schema negotiation"},
		Targets:    []string{"GRPCProvider", "GRPCProvider.ApplyResourceChange", "GRPCProvider.PlanResourceChange", "GRPCProvider.GetProviderSchema"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_HCL",
		Phrases:    []string{"hcl parsing", "parse configuration", "config representation", "variable interpolation"},
		Targets:    []string{"Parser", "Loader", "Variable", "Module", "LoadConfig", "BuildConfig"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
		{
		Concept:    "TF_OUTPUT",
		Phrases:    []string{"output command", "output format", "terraform output", "render output"},
		Targets:    []string{"OutputCommand", "OutputCommand.Run", "OutputChanges", "OutputValue"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "go",
		},
	}
}
