package ffiwrapper

import (
	"golang.org/x/xerrors"

	"github.com/filecoin-project/go-state-types/abi"
)

type Config struct {
	SealProofType abi.RegisteredSealProof

	_ struct{} // guard against nameless init
}

func sizeFromConfig(cfg Config) (abi.SectorSize, error) {
	return cfg.SealProofType.SectorSize()
}

func SealProofTypeFromSectorSize(ssize abi.SectorSize) (abi.RegisteredSealProof, error) {
	switch ssize {
	case 2 << 10:
		return abi.RegisteredSealProof_StackedDrg2KiBV1, nil
	case 8 << 20:
		return abi.RegisteredSealProof_StackedDrg8MiBV1, nil
	case 512 << 20:
		return abi.RegisteredSealProof_StackedDrg512MiBV1, nil
	case 32 << 30:
		return abi.RegisteredSealProof_StackedDrg32GiBV1, nil
	case 64 << 30:
		return abi.RegisteredSealProof_StackedDrg64GiBV1, nil
	default:
		return 0, xerrors.Errorf("unsupported sector size for miner: %v", ssize)
	}
}