Help us shape the future of Go! Take the 2026 Go Developer Survey

types

package
v0.55.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: Apache-2.0 Imports: 10 Imported by: 22,143

Documentation

Overview

Package types defines the InterfaceRegistry type as well as aliases for types that now live in the github.com/cosmos/gogoproto/types/any package for backwards compatibility with legacy code.

Index

Constants

This section is empty.

Variables

View Source
var (

	// MaxUnpackAnySubCalls extension point that defines the maximum number of sub-calls allowed during the unpacking
	// process of protobuf Any messages.
	MaxUnpackAnySubCalls = 100

	// MaxUnpackAnyRecursionDepth extension point that defines the maximum allowed recursion depth during protobuf Any
	// message unpacking.
	MaxUnpackAnyRecursionDepth = 10
)

NewAnyWithValue is an alias for github.com/cosmos/gogoproto/types/any.NewAnyWithCacheWithValue.

UnsafePackAny is an alias for github.com/cosmos/gogoproto/types/any.UnsafePackAnyWithCache.

Functions

func MsgTypeURL added in v0.50.0

func MsgTypeURL(msg proto.Message) string

MsgTypeURL returns the TypeURL of a `sdk.Msg`.

func UnpackInterfaces

func UnpackInterfaces(x interface{}, unpacker gogoprotoany.AnyUnpacker) error

UnpackInterfaces is a convenience function that calls UnpackInterfaces on x if x implements UnpackInterfacesMessage

Types

type AminoJSONPacker

type AminoJSONPacker = gogoany.AminoJSONPacker

AminoJSONPacker is an alias for github.com/cosmos/gogoproto/types/any.AminoJSONPacker.

type AminoJSONUnpacker

type AminoJSONUnpacker = gogoany.AminoJSONUnpacker

AminoJSONUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AminoJSONUnpacker.

type AminoPacker

type AminoPacker = gogoany.AminoPacker

AminoPacker is an alias for github.com/cosmos/gogoproto/types/any.AminoPacker.

type AminoUnpacker

type AminoUnpacker = gogoany.AminoUnpacker

AminoUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AminoUnpacker.

type Any

type Any = gogoany.Any

Any is an alias for github.com/cosmos/gogoproto/types/any.Any.

type AnyUnpacker

type AnyUnpacker = gogoprotoany.AnyUnpacker

AnyUnpacker is an alias for github.com/cosmos/gogoproto/types/any.AnyUnpacker.

type InterfaceRegistry

type InterfaceRegistry interface {
	gogoprotoany.AnyUnpacker
	jsonpb.AnyResolver

	// RegisterInterface associates protoName as the public name for the
	// interface passed in as iface. This is to be used primarily to create
	// a public facing registry of interface implementations for clients.
	// protoName should be a well-chosen public facing name that remains stable.
	// RegisterInterface takes an optional list of impls to be registered
	// as implementations of iface.
	//
	// Ex:
	//   registry.RegisterInterface("cosmos.base.v1beta1.Msg", (*sdk.Msg)(nil))
	RegisterInterface(protoName string, iface any, impls ...proto.Message)

	// RegisterImplementations registers impls as concrete implementations of
	// the interface iface.
	//
	// Ex:
	//  registry.RegisterImplementations((*sdk.Msg)(nil), &MsgSend{}, &MsgMultiSend{})
	RegisterImplementations(iface any, impls ...proto.Message)

	// ListAllInterfaces list the type URLs of all registered interfaces.
	ListAllInterfaces() []string

	// ListImplementations lists the valid type URLs for the given interface name that can be used
	// for the provided interface type URL.
	ListImplementations(ifaceTypeURL string) []string

	// EnsureRegistered ensures there is a registered interface for the given concrete type.
	EnsureRegistered(iface any) error

	protodesc.Resolver

	// RangeFiles iterates over all registered files and calls f on each one. This
	// implements the part of protoregistry.Files that is needed for reflecting over
	// the entire FileDescriptorSet.
	RangeFiles(f func(protoreflect.FileDescriptor) bool)

	SigningContext() *signing.Context
	// contains filtered or unexported methods
}

InterfaceRegistry provides a mechanism for registering interfaces and implementations that can be safely unpacked from Any

func NewInterfaceRegistry

func NewInterfaceRegistry() InterfaceRegistry

NewInterfaceRegistry returns a new InterfaceRegistry

func NewInterfaceRegistryWithOptions added in v0.50.0

func NewInterfaceRegistryWithOptions(options InterfaceRegistryOptions) (InterfaceRegistry, error)

NewInterfaceRegistryWithOptions returns a new InterfaceRegistry with the given options.

type InterfaceRegistryOptions added in v0.50.0

type InterfaceRegistryOptions struct {
	// ProtoFiles is the set of files to use for the registry. It is required.
	ProtoFiles signing.ProtoFileResolver

	// SigningOptions are the signing options to use for the registry.
	SigningOptions signing.Options
}

InterfaceRegistryOptions are options for creating a new InterfaceRegistry.

type ProtoJSONPacker added in v0.40.0

type ProtoJSONPacker = gogoany.ProtoJSONPacker

ProtoJSONPacker is an alias for github.com/cosmos/gogoproto/types/any.ProtoJSONPacker.

type UnpackInterfacesMessage

type UnpackInterfacesMessage interface {
	// UnpackInterfaces is implemented in order to unpack values packed within
	// Any's using the AnyUnpacker. It should generally be implemented as
	// follows:
	//   func (s *MyStruct) UnpackInterfaces(unpacker AnyUnpacker) error {
	//		var x AnyInterface
	//		// where X is an Any field on MyStruct
	//		err := unpacker.UnpackAny(s.X, &x)
	//		if err != nil {
	//			return nil
	//		}
	//		// where Y is a field on MyStruct that implements UnpackInterfacesMessage itself
	//		err = s.Y.UnpackInterfaces(unpacker)
	//		if err != nil {
	//			return nil
	//		}
	//		return nil
	//	 }
	UnpackInterfaces(unpacker gogoprotoany.AnyUnpacker) error
}

UnpackInterfacesMessage is meant to extend protobuf types (which implement proto.Message) to support a post-deserialization phase which unpacks types packed within Any's using the whitelist provided by AnyUnpacker

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL