// CODE GENERATED BY github.com/golingon/lingon. DO NOT EDIT.

package local_sensitive_file

import "github.com/golingon/lingon/pkg/terra"

var _ terra.DataSource = (*DataSource)(nil)

// DataSource represents the Terraform data resource local_sensitive_file.
type DataSource struct {
	Name string
	Args DataArgs
}

// DataSource returns the Terraform object type for [DataSource].
func (lsf *DataSource) DataSource() string {
	return "local_sensitive_file"
}

// LocalName returns the local name for [DataSource].
func (lsf *DataSource) LocalName() string {
	return lsf.Name
}

// Configuration returns the configuration (args) for [DataSource].
func (lsf *DataSource) Configuration() interface{} {
	return lsf.Args
}

// Attributes returns the attributes for [DataSource].
func (lsf *DataSource) Attributes() dataLocalSensitiveFileAttributes {
	return dataLocalSensitiveFileAttributes{ref: terra.ReferenceDataSource(lsf)}
}

// DataArgs contains the configurations for local_sensitive_file.
type DataArgs struct {
	// Filename: string, required
	Filename terra.StringValue `hcl:"filename,attr" validate:"required"`
}

type dataLocalSensitiveFileAttributes struct {
	ref terra.Reference
}

// Content returns a reference to field content of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) Content() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content"))
}

// ContentBase64 returns a reference to field content_base64 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentBase64() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_base64"))
}

// ContentBase64Sha256 returns a reference to field content_base64sha256 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentBase64Sha256() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_base64sha256"))
}

// ContentBase64Sha512 returns a reference to field content_base64sha512 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentBase64Sha512() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_base64sha512"))
}

// ContentMd5 returns a reference to field content_md5 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentMd5() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_md5"))
}

// ContentSha1 returns a reference to field content_sha1 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentSha1() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_sha1"))
}

// ContentSha256 returns a reference to field content_sha256 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentSha256() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_sha256"))
}

// ContentSha512 returns a reference to field content_sha512 of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) ContentSha512() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("content_sha512"))
}

// Filename returns a reference to field filename of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) Filename() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("filename"))
}

// Id returns a reference to field id of local_sensitive_file.
func (lsf dataLocalSensitiveFileAttributes) Id() terra.StringValue {
	return terra.ReferenceAsString(lsf.ref.Append("id"))
}
