package interopnames

import (
	"crypto/sha256"
	"encoding/binary"
	"errors"
)

var errNotFound = errors.New("interop not found")

// ToID returns an identificator of the method based on its name.
func ToID(name []byte) uint32 {
	h := sha256.Sum256(name)
	return binary.LittleEndian.Uint32(h[:4])
}

// FromID returns interop name from its id.
func FromID(id uint32) (string, error) {
	for i := range names {
		if id == ToID([]byte(names[i])) {
			return names[i], nil
		}
	}
	return "", errNotFound
}