// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package workdir import ( "github.com/hashicorp/terraform/internal/configs/configschema" "github.com/zclconf/go-cty/cty" ) // ConfigState describes a configuration block, and is used to make that config block stateful. type ConfigState interface { Empty() bool Config(schema *configschema.Block) (cty.Value, error) SetConfig(val cty.Value, schema *configschema.Block) error } // DeepCopier implementations can return deep copies of themselves for use elsewhere // without mutating the original value. type DeepCopier[T any] interface { DeepCopy() *T } // PlanDataProvider implementations can return a representation of their data that's // appropriate for storing in a plan file. type PlanDataProvider[T any] interface { PlanData(storeSchema *configschema.Block, providerSchema *configschema.Block, workspaceName string) (*T, error) }