package layoutbundleownerverificationv1

import (
	"crypto/sha256"
	"encoding/hex"

	"github.com/pingcap-inc/nexuscrm-contract/pkg/layoutbundlekeyv1"
)

// ReceiptDigest returns the external content identity of one singular receipt.
func ReceiptDigest(receipt Receipt) (string, error) {
	canonical, err := CanonicalReceiptBytes(receipt)
	if err != nil {
		return "", err
	}
	digest := sha256.Sum256(canonical)
	return "sha256:" + hex.EncodeToString(digest[:]), nil
}

// ReceiptSetDigest returns the external content identity of one complete
// source-bound receipt set after exact required-key validation.
func ReceiptSetDigest(
	set ReceiptSet,
	required layoutbundlekeyv1.RequiredBundleKeySet,
) (string, error) {
	canonical, err := CanonicalReceiptSetBytes(set, required)
	if err != nil {
		return "", err
	}
	digest := sha256.Sum256(canonical)
	return "sha256:" + hex.EncodeToString(digest[:]), nil
}
