--- /dev/null
+// Generated by: main
+// TypeWriter: wrapper
+// Directive: +gen on PrivKeyInner
+
+package crypto
+
+import (
+ "github.com/tendermint/go-wire/data"
+)
+
+// Auto-generated adapters for happily unmarshaling interfaces
+// Apache License 2.0
+// Copyright (c) 2017 Ethan Frey (ethan.frey@tendermint.com)
+
+type PrivKey struct {
+ PrivKeyInner "json:\"unwrap\""
+}
+
+var PrivKeyMapper = data.NewMapper(PrivKey{})
+
+func (h PrivKey) MarshalJSON() ([]byte, error) {
+ return PrivKeyMapper.ToJSON(h.PrivKeyInner)
+}
+
+func (h *PrivKey) UnmarshalJSON(data []byte) (err error) {
+ parsed, err := PrivKeyMapper.FromJSON(data)
+ if err == nil && parsed != nil {
+ h.PrivKeyInner = parsed.(PrivKeyInner)
+ }
+ return err
+}
+
+// Unwrap recovers the concrete interface safely (regardless of levels of embeds)
+func (h PrivKey) Unwrap() PrivKeyInner {
+ hi := h.PrivKeyInner
+ for wrap, ok := hi.(PrivKey); ok; wrap, ok = hi.(PrivKey) {
+ hi = wrap.PrivKeyInner
+ }
+ return hi
+}
+
+/*** below are bindings for each implementation ***/
+
+func init() {
+ PrivKeyMapper.RegisterImplementation(PrivKeyEd25519{}, "ed25519", 0x1)
+}
+
+func (hi PrivKeyEd25519) Wrap() PrivKey {
+ return PrivKey{hi}
+}