From 423179e5028de57b7859bbd6ebcb5d12a4b42fb5 Mon Sep 17 00:00:00 2001 From: ccamel Date: Tue, 13 Sep 2022 16:52:33 +0200 Subject: [PATCH] refactor!: reboot chain with ignite cli v0.24.0 The blockchain has been rebooted with the files generated with the of Ignite CLI v0.24.0 using the following command line: ``` ignite scaffold chain github.com/okp4/okp4d --address-prefix okp4 --no-module ``` With preservation of some of the extensions previously implemented and compliance with linters. --- app/ante.go | 67 - app/app.go | 641 +- app/encoding.go | 16 - app/export.go | 27 +- app/genesis.go | 7 +- app/params/encoding.go | 16 - app/params/proto.go | 22 - app/simulation_test.go | 113 + cmd/okp4d/debug_extensions.go | 61 - cmd/okp4d/genaccounts.go | 193 - cmd/okp4d/genwasm.go | 27 - cmd/okp4d/main.go | 39 +- cmd/okp4d/root.go | 280 - docs/okp4-banner.png | Bin 679836 -> 0 bytes docs/static/openapi.yml | 57290 +++++++++++++++++++++----------- go.mod | 187 +- go.sum | 1300 +- testutil/network/network.go | 81 + testutil/nullify/nullify.go | 1 - testutil/sample/sample.go | 2 +- 20 files changed, 39114 insertions(+), 21256 deletions(-) delete mode 100644 app/ante.go delete mode 100644 app/encoding.go delete mode 100644 app/params/encoding.go delete mode 100644 app/params/proto.go create mode 100644 app/simulation_test.go delete mode 100644 cmd/okp4d/debug_extensions.go delete mode 100644 cmd/okp4d/genaccounts.go delete mode 100644 cmd/okp4d/genwasm.go delete mode 100644 cmd/okp4d/root.go delete mode 100644 docs/okp4-banner.png create mode 100644 testutil/network/network.go diff --git a/app/ante.go b/app/ante.go deleted file mode 100644 index 937f87fb..00000000 --- a/app/ante.go +++ /dev/null @@ -1,67 +0,0 @@ -package app - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - ibcante "github.com/cosmos/ibc-go/v3/modules/core/ante" - "github.com/cosmos/ibc-go/v3/modules/core/keeper" - - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - wasmTypes "github.com/CosmWasm/wasmd/x/wasm/types" -) - -// HandlerOptions extend the SDK's AnteHandler options by requiring the IBC -// channel keeper. -type HandlerOptions struct { - ante.HandlerOptions - - IBCKeeper *keeper.Keeper - WasmConfig *wasmTypes.WasmConfig - TXCounterStoreKey sdk.StoreKey -} - -func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { - if options.AccountKeeper == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") - } - if options.BankKeeper == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") - } - if options.SignModeHandler == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") - } - if options.WasmConfig == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "wasm config is required for ante builder") - } - if options.TXCounterStoreKey == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "tx counter key is required for ante builder") - } - - sigGasConsumer := options.SigGasConsumer - if sigGasConsumer == nil { - sigGasConsumer = ante.DefaultSigVerificationGasConsumer - } - - anteDecorators := []sdk.AnteDecorator{ - ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first - wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit), // after setup context to enforce limits early - wasmkeeper.NewCountTXDecorator(options.TXCounterStoreKey), - ante.NewRejectExtensionOptionsDecorator(), - ante.NewMempoolFeeDecorator(), - ante.NewValidateBasicDecorator(), - ante.NewTxTimeoutHeightDecorator(), - ante.NewValidateMemoDecorator(options.AccountKeeper), - ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), - // SetPubKeyDecorator must be called before all signature verification decorators - ante.NewSetPubKeyDecorator(options.AccountKeeper), - ante.NewValidateSigCountDecorator(options.AccountKeeper), - ante.NewSigGasConsumeDecorator(options.AccountKeeper, sigGasConsumer), - ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), - ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewAnteDecorator(options.IBCKeeper), - } - - return sdk.ChainAnteDecorators(anteDecorators...), nil -} diff --git a/app/app.go b/app/app.go index aac9efa3..557958e1 100644 --- a/app/app.go +++ b/app/app.go @@ -6,27 +6,22 @@ import ( "net/http" "os" "path/filepath" - "strings" - "github.com/CosmWasm/wasmd/x/wasm" - wasmclient "github.com/CosmWasm/wasmd/x/wasm/client" - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" - "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/simapp" + storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth/ante" - authrest "github.com/cosmos/cosmos-sdk/x/auth/client/rest" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" @@ -58,8 +53,14 @@ import ( "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" "github.com/cosmos/cosmos-sdk/x/gov" + govclient "github.com/cosmos/cosmos-sdk/x/gov/client" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/cosmos-sdk/x/group" + groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" + groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" "github.com/cosmos/cosmos-sdk/x/mint" mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" @@ -78,87 +79,63 @@ import ( upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ica "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts" - icacontroller "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller" - icacontrollerkeeper "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/keeper" - icacontrollertypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types" - icahost "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types" - "github.com/cosmos/ibc-go/v3/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v3/modules/core" - ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client" - ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client" - ibcclienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - ibcporttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" - ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" - okp4appparams "github.com/okp4/okp4d/app/params" + ica "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts" + icahost "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/host/types" + icatypes "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/types" + "github.com/cosmos/ibc-go/v5/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v5/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v5/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v5/modules/core" + ibcclient "github.com/cosmos/ibc-go/v5/modules/core/02-client" + ibcclientclient "github.com/cosmos/ibc-go/v5/modules/core/02-client/client" + ibcclienttypes "github.com/cosmos/ibc-go/v5/modules/core/02-client/types" + ibcporttypes "github.com/cosmos/ibc-go/v5/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/v5/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/v5/modules/core/keeper" "github.com/spf13/cast" abci "github.com/tendermint/tendermint/abci/types" tmjson "github.com/tendermint/tendermint/libs/json" "github.com/tendermint/tendermint/libs/log" tmos "github.com/tendermint/tendermint/libs/os" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" dbm "github.com/tendermint/tm-db" - intertx "github.com/cosmos/interchain-accounts/x/inter-tx" - intertxkeeper "github.com/cosmos/interchain-accounts/x/inter-tx/keeper" - intertxtypes "github.com/cosmos/interchain-accounts/x/inter-tx/types" + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + "github.com/ignite/cli/ignite/pkg/openapiconsole" "github.com/okp4/okp4d/docs" + // this line is used by starport scaffolding # stargate/app/moduleImport ) const ( AccountAddressPrefix = "okp4" Name = "okp4d" - - // If EnabledSpecificProposals is "", and this is "true", then enable all x/wasm proposals. - // If EnabledSpecificProposals is "", and this is not "true", then disable all x/wasm proposals. - ProposalsEnabled = "false" - // If set to non-empty string it must be comma-separated list of values that are all a subset - // of "EnableAllProposals" (takes precedence over ProposalsEnabled) - // https://github.com/CosmWasm/wasmd/blob/02a54d33ff2c064f3539ae12d75d027d9c665f05/x/wasm/internal/types/proposal.go#L28-L34 - EnableSpecificProposals = "" ) -// GetEnabledProposals parses the ProposalsEnabled / EnableSpecificProposals values to -// produce a list of enabled proposals to pass into okp4d app. -func GetEnabledProposals() []wasm.ProposalType { - if EnableSpecificProposals == "" { - if ProposalsEnabled == "true" { - return wasm.EnableAllProposals - } - return wasm.DisableAllProposals - } - chunks := strings.Split(EnableSpecificProposals, ",") - proposals, err := wasm.ConvertToProposals(chunks) - if err != nil { - panic(err) - } - return proposals +// this line is used by starport scaffolding # stargate/wasm/app/enabledProposals + +func getGovProposalHandlers() []govclient.ProposalHandler { + var govProposalHandlers []govclient.ProposalHandler + // this line is used by starport scaffolding # stargate/app/govProposalHandlers + + govProposalHandlers = append(govProposalHandlers, + paramsclient.ProposalHandler, + distrclient.ProposalHandler, + upgradeclient.LegacyProposalHandler, + upgradeclient.LegacyCancelProposalHandler, + ibcclientclient.UpdateClientProposalHandler, + ibcclientclient.UpgradeProposalHandler, + // this line is used by starport scaffolding # stargate/app/govProposalHandler + ) + + return govProposalHandlers } var ( - // DefaultNodeHome default home directories for the application daemon. + // DefaultNodeHome default home directories for the application daemon DefaultNodeHome string - // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address. - Bech32PrefixAccAddr = AccountAddressPrefix - // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key. - Bech32PrefixAccPub = AccountAddressPrefix + sdk.PrefixPublic - // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address. - Bech32PrefixValAddr = AccountAddressPrefix + sdk.PrefixValidator + sdk.PrefixOperator - // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key. - Bech32PrefixValPub = AccountAddressPrefix + sdk.PrefixValidator + sdk.PrefixOperator + sdk.PrefixPublic - // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address. - Bech32PrefixConsAddr = AccountAddressPrefix + sdk.PrefixValidator + sdk.PrefixConsensus - // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key. - Bech32PrefixConsPub = AccountAddressPrefix + sdk.PrefixValidator + sdk.PrefixConsensus + sdk.PrefixPublic - // ModuleBasics defines the module BasicManager is in charge of setting up basic, // non-dependant module elements, such as codec registration // and genesis verification. @@ -171,47 +148,39 @@ var ( staking.AppModuleBasic{}, mint.AppModuleBasic{}, distr.AppModuleBasic{}, - gov.NewAppModuleBasic( - append(wasmclient.ProposalHandlers, - paramsclient.ProposalHandler, - distrclient.ProposalHandler, - upgradeclient.ProposalHandler, - upgradeclient.CancelProposalHandler, - ibcclientclient.UpdateClientProposalHandler, - ibcclientclient.UpgradeProposalHandler, - )..., - ), + gov.NewAppModuleBasic(getGovProposalHandlers()), params.AppModuleBasic{}, crisis.AppModuleBasic{}, slashing.AppModuleBasic{}, feegrantmodule.AppModuleBasic{}, + groupmodule.AppModuleBasic{}, ibc.AppModuleBasic{}, upgrade.AppModuleBasic{}, evidence.AppModuleBasic{}, transfer.AppModuleBasic{}, - vesting.AppModuleBasic{}, - wasm.AppModuleBasic{}, ica.AppModuleBasic{}, - intertx.AppModuleBasic{}, + vesting.AppModuleBasic{}, + // this line is used by starport scaffolding # stargate/app/moduleBasic ) - // module account permissions. + // module account permissions maccPerms = map[string][]string{ authtypes.FeeCollectorName: nil, distrtypes.ModuleName: nil, + icatypes.ModuleName: nil, minttypes.ModuleName: {authtypes.Minter}, stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, govtypes.ModuleName: {authtypes.Burner}, ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - icatypes.ModuleName: nil, - wasm.ModuleName: {authtypes.Burner}, + // this line is used by starport scaffolding # stargate/app/maccPerms } ) var ( - _ servertypes.Application = (*OKP4App)(nil) - _ simapp.App = (*OKP4App)(nil) + _ cosmoscmd.App = (*App)(nil) + _ servertypes.Application = (*App)(nil) + _ simapp.App = (*App)(nil) ) func init() { @@ -223,10 +192,10 @@ func init() { DefaultNodeHome = filepath.Join(userHomeDir, "."+Name) } -// OKP4App extends an ABCI application, but with most of its parameters exported. +// App extends an ABCI application, but with most of its parameters exported. // They are exported for convenience in creating helper functions, as object // capabilities aren't needed for testing. -type OKP4App struct { +type App struct { *baseapp.BaseApp cdc *codec.LegacyAmino @@ -236,50 +205,47 @@ type OKP4App struct { invCheckPeriod uint // keys to access the substores - keys map[string]*sdk.KVStoreKey - tkeys map[string]*sdk.TransientStoreKey - memKeys map[string]*sdk.MemoryStoreKey + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + memKeys map[string]*storetypes.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - AuthzKeeper authzkeeper.Keeper - BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - MintKeeper mintkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper - UpgradeKeeper upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - ICAControllerKeeper icacontrollerkeeper.Keeper - ICAHostKeeper icahostkeeper.Keeper - InterTxKeeper intertxkeeper.Keeper - EvidenceKeeper evidencekeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - WasmKeeper wasm.Keeper - - // make scoped keepers public for test purposes. - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedICAHostKeeper capabilitykeeper.ScopedKeeper - ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper - ScopedInterTxKeeper capabilitykeeper.ScopedKeeper - ScopedTransferKeeper capabilitykeeper.ScopedKeeper - ScopedWasmKeeper capabilitykeeper.ScopedKeeper - - // mm is the module manager. + AccountKeeper authkeeper.AccountKeeper + AuthzKeeper authzkeeper.Keeper + BankKeeper bankkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper + StakingKeeper stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + MintKeeper mintkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper crisiskeeper.Keeper + UpgradeKeeper upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + EvidenceKeeper evidencekeeper.Keeper + TransferKeeper ibctransferkeeper.Keeper + ICAHostKeeper icahostkeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + GroupKeeper groupkeeper.Keeper + + // make scoped keepers public for test purposes + ScopedIBCKeeper capabilitykeeper.ScopedKeeper + ScopedTransferKeeper capabilitykeeper.ScopedKeeper + ScopedICAHostKeeper capabilitykeeper.ScopedKeeper + + // this line is used by starport scaffolding # stargate/app/keeperDeclaration + + // mm is the module manager mm *module.Manager - // sm is the simulation manager. - sm *module.SimulationManager + // sm is the simulation manager + sm *module.SimulationManager + configurator module.Configurator } -// NewOKP4App returns a reference to an initialized OKP4 blockchain app. -// nolint:funlen -func NewOKP4App( +// New returns a reference to an initialized blockchain app +func New( logger log.Logger, db dbm.DB, traceStore io.Writer, @@ -287,12 +253,10 @@ func NewOKP4App( skipUpgradeHeights map[int64]bool, homePath string, invCheckPeriod uint, - encodingConfig okp4appparams.EncodingConfig, - enabledProposals []wasm.ProposalType, + encodingConfig cosmoscmd.EncodingConfig, appOpts servertypes.AppOptions, - wasmOpts []wasm.Option, baseAppOptions ...func(*baseapp.BaseApp), -) *OKP4App { +) cosmoscmd.App { appCodec := encodingConfig.Marshaler cdc := encodingConfig.Amino interfaceRegistry := encodingConfig.InterfaceRegistry @@ -303,16 +267,16 @@ func NewOKP4App( bApp.SetInterfaceRegistry(interfaceRegistry) keys := sdk.NewKVStoreKeys( - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, - minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, - evidencetypes.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, - feegrant.StoreKey, authzkeeper.StoreKey, wasm.StoreKey, icahosttypes.StoreKey, icacontrollertypes.StoreKey, intertxtypes.StoreKey, + authtypes.StoreKey, authz.ModuleName, banktypes.StoreKey, stakingtypes.StoreKey, + minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, + paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, + ibctransfertypes.StoreKey, icahosttypes.StoreKey, capabilitytypes.StoreKey, group.StoreKey, + // this line is used by starport scaffolding # stargate/app/storeKey ) tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) - app := &OKP4App{ + app := &App{ BaseApp: bApp, cdc: cdc, appCodec: appCodec, @@ -323,55 +287,123 @@ func NewOKP4App( memKeys: memKeys, } - app.ParamsKeeper = initParamsKeeper(appCodec, cdc, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + app.ParamsKeeper = initParamsKeeper( + appCodec, + cdc, + keys[paramstypes.StoreKey], + tkeys[paramstypes.TStoreKey], + ) // set the BaseApp's parameter store - bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramskeeper.ConsensusParamsKeyTable())) + bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable())) // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) + app.CapabilityKeeper = capabilitykeeper.NewKeeper( + appCodec, + keys[capabilitytypes.StoreKey], + memKeys[capabilitytypes.MemStoreKey], + ) // grant capabilities for the ibc and ibc-transfer modules scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) - scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) - scopedICAControllerKeeper := app.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName) - scopedInterTxKeeper := app.CapabilityKeeper.ScopeToModule(intertxtypes.ModuleName) scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - scopedWasmKeeper := app.CapabilityKeeper.ScopeToModule(wasm.ModuleName) - app.CapabilityKeeper.Seal() + scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) + // this line is used by starport scaffolding # stargate/app/scopedKeeper // add keepers app.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), authtypes.ProtoBaseAccount, maccPerms, + appCodec, + keys[authtypes.StoreKey], + app.GetSubspace(authtypes.ModuleName), + authtypes.ProtoBaseAccount, + maccPerms, + sdk.Bech32PrefixAccAddr, ) app.AuthzKeeper = authzkeeper.NewKeeper( - keys[authz.ModuleName], appCodec, app.MsgServiceRouter(), + keys[authz.ModuleName], + appCodec, + app.MsgServiceRouter(), + app.AccountKeeper, ) app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.ModuleAccountAddrs(), + appCodec, + keys[banktypes.StoreKey], + app.AccountKeeper, + app.GetSubspace(banktypes.ModuleName), + app.BlockedModuleAccountAddrs(), ) + stakingKeeper := stakingkeeper.NewKeeper( - appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName), + appCodec, + keys[stakingtypes.StoreKey], + app.AccountKeeper, + app.BankKeeper, + app.GetSubspace(stakingtypes.ModuleName), ) + app.MintKeeper = mintkeeper.NewKeeper( - appCodec, keys[minttypes.StoreKey], app.GetSubspace(minttypes.ModuleName), &stakingKeeper, - app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, + appCodec, + keys[minttypes.StoreKey], + app.GetSubspace(minttypes.ModuleName), + &stakingKeeper, + app.AccountKeeper, + app.BankKeeper, + authtypes.FeeCollectorName, ) + app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, keys[distrtypes.StoreKey], app.GetSubspace(distrtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, authtypes.FeeCollectorName, app.ModuleAccountAddrs(), + appCodec, + keys[distrtypes.StoreKey], + app.GetSubspace(distrtypes.ModuleName), + app.AccountKeeper, + app.BankKeeper, + &stakingKeeper, + authtypes.FeeCollectorName, ) + app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, keys[slashingtypes.StoreKey], &stakingKeeper, app.GetSubspace(slashingtypes.ModuleName), + appCodec, + keys[slashingtypes.StoreKey], + &stakingKeeper, + app.GetSubspace(slashingtypes.ModuleName), ) + app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), invCheckPeriod, app.BankKeeper, authtypes.FeeCollectorName, + app.GetSubspace(crisistypes.ModuleName), + invCheckPeriod, + app.BankKeeper, + authtypes.FeeCollectorName, ) - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) - app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp) + groupConfig := group.DefaultConfig() + /* + Example of setting group params: + groupConfig.MaxMetadataLen = 1000 + */ + app.GroupKeeper = groupkeeper.NewKeeper( + keys[group.StoreKey], + appCodec, + app.MsgServiceRouter(), + app.AccountKeeper, + groupConfig, + ) + + app.FeeGrantKeeper = feegrantkeeper.NewKeeper( + appCodec, + keys[feegrant.StoreKey], + app.AccountKeeper, + ) + + app.UpgradeKeeper = upgradekeeper.NewKeeper( + skipUpgradeHeights, + keys[upgradetypes.StoreKey], + appCodec, + homePath, + app.BaseApp, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) // register the staking hooks // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks @@ -383,17 +415,13 @@ func NewOKP4App( // Create IBC Keeper app.IBCKeeper = ibckeeper.NewKeeper( - appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, + appCodec, keys[ibchost.StoreKey], + app.GetSubspace(ibchost.ModuleName), + app.StakingKeeper, + app.UpgradeKeeper, + scopedIBCKeeper, ) - // register the proposal types - govRouter := govtypes.NewRouter() - govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) - // Create Transfer Keepers app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, @@ -410,8 +438,7 @@ func NewOKP4App( transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) app.ICAHostKeeper = icahostkeeper.NewKeeper( - appCodec, - keys[icahosttypes.StoreKey], + appCodec, keys[icahosttypes.StoreKey], app.GetSubspace(icahosttypes.SubModuleName), app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, @@ -419,82 +446,46 @@ func NewOKP4App( scopedICAHostKeeper, app.MsgServiceRouter(), ) - app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( - appCodec, - keys[icacontrollertypes.StoreKey], - app.GetSubspace(icacontrollertypes.SubModuleName), - app.IBCKeeper.ChannelKeeper, // may be replaced with middleware such as ics29 fee - app.IBCKeeper.ChannelKeeper, - &app.IBCKeeper.PortKeeper, - scopedICAControllerKeeper, - app.MsgServiceRouter(), - ) - icaModule := ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper) + icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper) icaHostIBCModule := icahost.NewIBCModule(app.ICAHostKeeper) - // For okp4d we use the demo controller from https://github.com/cosmos/interchain-accounts but see notes below - app.InterTxKeeper = intertxkeeper.NewKeeper(appCodec, keys[intertxtypes.StoreKey], app.ICAControllerKeeper, scopedInterTxKeeper) - // Note: please do your research before using this in production app, this is a demo and not an officially - // supported IBC team implementation. Do your own research before using it. - interTxModule := intertx.NewAppModule(appCodec, app.InterTxKeeper) - interTxIBCModule := intertx.NewIBCModule(app.InterTxKeeper) - // You will likely want to swap out the second argument with your own reviewed and maintained ica auth module - icaControllerIBCModule := icacontroller.NewIBCModule(app.ICAControllerKeeper, interTxIBCModule) - // Create evidence Keeper for to register the IBC light client misbehaviour evidence route evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, keys[evidencetypes.StoreKey], &app.StakingKeeper, app.SlashingKeeper, + appCodec, + keys[evidencetypes.StoreKey], + &app.StakingKeeper, + app.SlashingKeeper, ) // If evidence needs to be handled for the app, set routes in router here and seal app.EvidenceKeeper = *evidenceKeeper - wasmDir := filepath.Join(homePath, "wasm") - wasmConfig, err := wasm.ReadWasmConfig(appOpts) - if err != nil { - panic(fmt.Sprintf("error while reading wasm config: %s", err)) - } - - // The last arguments can contain custom message handlers, and custom query handlers, - // if we want to allow any custom callbacks - supportedFeatures := "iterator,staking,stargate" - app.WasmKeeper = wasm.NewKeeper( + govRouter := govv1beta1.NewRouter() + govRouter. + AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). + AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). + AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). + AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) + govConfig := govtypes.DefaultConfig() + app.GovKeeper = govkeeper.NewKeeper( appCodec, - keys[wasm.StoreKey], - app.GetSubspace(wasm.ModuleName), + keys[govtypes.StoreKey], + app.GetSubspace(govtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - app.StakingKeeper, - app.DistrKeeper, - app.IBCKeeper.ChannelKeeper, - &app.IBCKeeper.PortKeeper, - scopedWasmKeeper, - app.TransferKeeper, + &stakingKeeper, + govRouter, app.MsgServiceRouter(), - app.GRPCQueryRouter(), - wasmDir, - wasmConfig, - supportedFeatures, - wasmOpts..., + govConfig, ) - app.GovKeeper = govkeeper.NewKeeper( - appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, govRouter, - ) + // this line is used by starport scaffolding # stargate/app/keeperDefinition // Create static IBC router, add transfer route, then set and seal it ibcRouter := ibcporttypes.NewRouter() - - // The gov proposal types can be individually enabled - if len(enabledProposals) != 0 { - govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(app.WasmKeeper, enabledProposals)) - } - ibcRouter. - AddRoute(wasm.ModuleName, wasm.NewIBCHandler(app.WasmKeeper, app.IBCKeeper.ChannelKeeper)). - AddRoute(ibctransfertypes.ModuleName, transferIBCModule). - AddRoute(icacontrollertypes.SubModuleName, icaControllerIBCModule). - AddRoute(icahosttypes.SubModuleName, icaHostIBCModule). - AddRoute(intertxtypes.ModuleName, icaControllerIBCModule) + ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostIBCModule). + AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + // this line is used by starport scaffolding # ibc/app/router app.IBCKeeper.SetRouter(ibcRouter) /**** Module Options ****/ @@ -517,21 +508,20 @@ func NewOKP4App( bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), capability.NewAppModule(appCodec, *app.CapabilityKeeper), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), + groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, minttypes.DefaultInflationCalculationFn), slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), upgrade.NewAppModule(app.UpgradeKeeper), - wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), evidence.NewAppModule(app.EvidenceKeeper), ibc.NewAppModule(app.IBCKeeper), params.NewAppModule(app.ParamsKeeper), transferModule, icaModule, - interTxModule, - // always be last to make sure that it checks for all invariants and not only part of them - crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), + // this line is used by starport scaffolding # stargate/app/appModule ) // During begin block slashing happens after distr.BeginBlocker so that @@ -539,6 +529,7 @@ func NewOKP4App( // CanWithdrawInvariant invariant. // NOTE: staking module is required if HistoricalEntries param > 0 app.mm.SetOrderBeginBlockers( + // upgrades should be run first upgradetypes.ModuleName, capabilitytypes.ModuleName, minttypes.ModuleName, @@ -546,44 +537,44 @@ func NewOKP4App( slashingtypes.ModuleName, evidencetypes.ModuleName, stakingtypes.ModuleName, - vestingtypes.ModuleName, authtypes.ModuleName, - authz.ModuleName, banktypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, - genutiltypes.ModuleName, - feegrant.ModuleName, - paramstypes.ModuleName, ibctransfertypes.ModuleName, ibchost.ModuleName, icatypes.ModuleName, - intertxtypes.ModuleName, - wasm.ModuleName, + genutiltypes.ModuleName, + authz.ModuleName, + feegrant.ModuleName, + group.ModuleName, + paramstypes.ModuleName, + vestingtypes.ModuleName, + // this line is used by starport scaffolding # stargate/app/beginBlockers ) app.mm.SetOrderEndBlockers( crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, + ibctransfertypes.ModuleName, + ibchost.ModuleName, + icatypes.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, - authz.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - vestingtypes.ModuleName, minttypes.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, + authz.ModuleName, feegrant.ModuleName, + group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - ibctransfertypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - intertxtypes.ModuleName, - wasm.ModuleName, + vestingtypes.ModuleName, + // this line is used by starport scaffolding # stargate/app/endBlockers ) // NOTE: The genutils module must occur after staking so that pools are @@ -594,31 +585,35 @@ func NewOKP4App( app.mm.SetOrderInitGenesis( capabilitytypes.ModuleName, authtypes.ModuleName, - authz.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName, - vestingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, genutiltypes.ModuleName, - evidencetypes.ModuleName, - paramstypes.ModuleName, - upgradetypes.ModuleName, - feegrant.ModuleName, ibctransfertypes.ModuleName, ibchost.ModuleName, icatypes.ModuleName, - intertxtypes.ModuleName, - // wasm after ibc transfer - wasm.ModuleName, + evidencetypes.ModuleName, + authz.ModuleName, + feegrant.ModuleName, + group.ModuleName, + paramstypes.ModuleName, + upgradetypes.ModuleName, + vestingtypes.ModuleName, + // this line is used by starport scaffolding # stargate/app/initGenesis ) + // Uncomment if you want to set a custom migration order here. + // app.mm.SetOrderMigrations(custom order) + app.mm.RegisterInvariants(&app.CrisisKeeper) app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) - app.mm.RegisterServices(module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())) + + app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) + app.mm.RegisterServices(app.configurator) // create the simulation manager and define the order of the modules for deterministic simulations app.sm = module.NewSimulationManager( @@ -628,15 +623,16 @@ func NewOKP4App( capability.NewAppModule(appCodec, *app.CapabilityKeeper), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, minttypes.DefaultInflationCalculationFn), staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), params.NewAppModule(app.ParamsKeeper), + groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), evidence.NewAppModule(app.EvidenceKeeper), - wasm.NewAppModule(appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), ibc.NewAppModule(app.IBCKeeper), transferModule, + // this line is used by starport scaffolding # stargate/app/appModule ) app.sm.RegisterStoreDecoders() @@ -649,76 +645,55 @@ func NewOKP4App( app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) - anteHandler, err := NewAnteHandler( - HandlerOptions{ - HandlerOptions: ante.HandlerOptions{ - AccountKeeper: app.AccountKeeper, - BankKeeper: app.BankKeeper, - FeegrantKeeper: app.FeeGrantKeeper, - SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), - SigGasConsumer: ante.DefaultSigVerificationGasConsumer, - }, - IBCKeeper: app.IBCKeeper, - WasmConfig: &wasmConfig, - TXCounterStoreKey: keys[wasm.StoreKey], + anteHandler, err := ante.NewAnteHandler( + ante.HandlerOptions{ + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), + FeegrantKeeper: app.FeeGrantKeeper, + SigGasConsumer: ante.DefaultSigVerificationGasConsumer, }, ) if err != nil { - panic(err) + panic(fmt.Errorf("failed to create AnteHandler: %s", err)) } app.SetAnteHandler(anteHandler) + app.SetInitChainer(app.InitChainer) + app.SetBeginBlocker(app.BeginBlocker) app.SetEndBlocker(app.EndBlocker) - if manager := app.SnapshotManager(); manager != nil { - err := manager.RegisterExtensions( - wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.WasmKeeper), - ) - if err != nil { - panic(fmt.Errorf("failed to register snapshot extension: %w", err)) - } - } - - app.ScopedIBCKeeper = scopedIBCKeeper - app.ScopedTransferKeeper = scopedTransferKeeper - app.ScopedWasmKeeper = scopedWasmKeeper - app.ScopedICAHostKeeper = scopedICAHostKeeper - app.ScopedICAControllerKeeper = scopedICAControllerKeeper - app.ScopedInterTxKeeper = scopedInterTxKeeper - if loadLatest { if err := app.LoadLatestVersion(); err != nil { tmos.Exit(err.Error()) } - ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) - - // Initialize pinned codes in wasmvm as they are not persisted there - if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil { - tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err)) - } } + app.ScopedIBCKeeper = scopedIBCKeeper + app.ScopedTransferKeeper = scopedTransferKeeper + // this line is used by starport scaffolding # stargate/app/beforeInitReturn + return app } -// Name returns the name of the App. -func (app *OKP4App) Name() string { return app.BaseApp.Name() } +// Name returns the name of the App +func (app *App) Name() string { return app.BaseApp.Name() } -// GetBaseApp returns the base app of the application. -func (app OKP4App) GetBaseApp() *baseapp.BaseApp { return app.BaseApp } +// GetBaseApp returns the base app of the application +func (app App) GetBaseApp() *baseapp.BaseApp { return app.BaseApp } -// BeginBlocker application updates every begin block. -func (app *OKP4App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { +// BeginBlocker application updates every begin block +func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { return app.mm.BeginBlock(ctx, req) } -// EndBlocker application updates every end block. -func (app *OKP4App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { +// EndBlocker application updates every end block +func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { return app.mm.EndBlock(ctx, req) } -// InitChainer application update at chain initialization. -func (app *OKP4App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { +// InitChainer application update at chain initialization +func (app *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { var genesisState GenesisState if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) @@ -727,13 +702,13 @@ func (app *OKP4App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci return app.mm.InitGenesis(ctx, app.appCodec, genesisState) } -// LoadHeight loads a particular height. -func (app *OKP4App) LoadHeight(height int64) error { +// LoadHeight loads a particular height +func (app *App) LoadHeight(height int64) error { return app.LoadVersion(height) } // ModuleAccountAddrs returns all the app's module account addresses. -func (app *OKP4App) ModuleAccountAddrs() map[string]bool { +func (app *App) ModuleAccountAddrs() map[string]bool { modAccAddrs := make(map[string]bool) for acc := range maccPerms { modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true @@ -742,11 +717,20 @@ func (app *OKP4App) ModuleAccountAddrs() map[string]bool { return modAccAddrs } +// BlockedModuleAccountAddrs returns all the app's blocked module account +// addresses. +func (app *App) BlockedModuleAccountAddrs() map[string]bool { + modAccAddrs := app.ModuleAccountAddrs() + delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + return modAccAddrs +} + // LegacyAmino returns SimApp's amino codec. // // NOTE: This is solely to be used for testing purposes as it may be desirable // for modules to register their own custom testing types. -func (app *OKP4App) LegacyAmino() *codec.LegacyAmino { +func (app *App) LegacyAmino() *codec.LegacyAmino { return app.cdc } @@ -754,75 +738,77 @@ func (app *OKP4App) LegacyAmino() *codec.LegacyAmino { // // NOTE: This is solely to be used for testing purposes as it may be desirable // for modules to register their own custom testing types. -func (app *OKP4App) AppCodec() codec.Codec { +func (app *App) AppCodec() codec.Codec { return app.appCodec } -// InterfaceRegistry returns an InterfaceRegistry. -func (app *OKP4App) InterfaceRegistry() types.InterfaceRegistry { +// InterfaceRegistry returns an InterfaceRegistry +func (app *App) InterfaceRegistry() types.InterfaceRegistry { return app.interfaceRegistry } // GetKey returns the KVStoreKey for the provided store key. // // NOTE: This is solely to be used for testing purposes. -func (app *OKP4App) GetKey(storeKey string) *sdk.KVStoreKey { +func (app *App) GetKey(storeKey string) *storetypes.KVStoreKey { return app.keys[storeKey] } // GetTKey returns the TransientStoreKey for the provided store key. // // NOTE: This is solely to be used for testing purposes. -func (app *OKP4App) GetTKey(storeKey string) *sdk.TransientStoreKey { +func (app *App) GetTKey(storeKey string) *storetypes.TransientStoreKey { return app.tkeys[storeKey] } // GetMemKey returns the MemStoreKey for the provided mem key. // // NOTE: This is solely used for testing purposes. -func (app *OKP4App) GetMemKey(storeKey string) *sdk.MemoryStoreKey { +func (app *App) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { return app.memKeys[storeKey] } // GetSubspace returns a param subspace for a given module name. // // NOTE: This is solely to be used for testing purposes. -func (app *OKP4App) GetSubspace(moduleName string) paramstypes.Subspace { +func (app *App) GetSubspace(moduleName string) paramstypes.Subspace { subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) return subspace } // RegisterAPIRoutes registers all application module routes with the provided // API server. -func (app *OKP4App) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { +func (app *App) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { clientCtx := apiSvr.ClientCtx - rpc.RegisterRoutes(clientCtx, apiSvr.Router) - // Register legacy tx routes. - authrest.RegisterTxRoutes(clientCtx, apiSvr.Router) // Register new tx routes from grpc-gateway. authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // Register new tendermint queries routes from grpc-gateway. tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - // Register legacy and grpc-gateway routes for all modules. - ModuleBasics.RegisterRESTRoutes(clientCtx, apiSvr.Router) + // Register grpc-gateway routes for all modules. ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // register app's OpenAPI routes. apiSvr.Router.Handle("/static/openapi.yml", http.FileServer(http.FS(docs.Docs))) + apiSvr.Router.HandleFunc("/", openapiconsole.Handler(Name, "/static/openapi.yml")) } // RegisterTxService implements the Application.RegisterTxService method. -func (app *OKP4App) RegisterTxService(clientCtx client.Context) { +func (app *App) RegisterTxService(clientCtx client.Context) { authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) } // RegisterTendermintService implements the Application.RegisterTendermintService method. -func (app *OKP4App) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry) +func (app *App) RegisterTendermintService(clientCtx client.Context) { + tmservice.RegisterTendermintService( + clientCtx, + app.BaseApp.GRPCQueryRouter(), + app.interfaceRegistry, + app.Query, + ) } -// GetMaccPerms returns a copy of the module account permissions. +// GetMaccPerms returns a copy of the module account permissions func GetMaccPerms() map[string][]string { dupMaccPerms := make(map[string][]string) for k, v := range maccPerms { @@ -831,8 +817,8 @@ func GetMaccPerms() map[string][]string { return dupMaccPerms } -// initParamsKeeper init params keeper and its subspaces. -func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) paramskeeper.Keeper { +// initParamsKeeper init params keeper and its subspaces +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) paramsKeeper.Subspace(authtypes.ModuleName) @@ -841,18 +827,17 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(minttypes.ModuleName) paramsKeeper.Subspace(distrtypes.ModuleName) paramsKeeper.Subspace(slashingtypes.ModuleName) - paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable()) + paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ibchost.ModuleName) paramsKeeper.Subspace(icahosttypes.SubModuleName) - paramsKeeper.Subspace(icacontrollertypes.SubModuleName) - paramsKeeper.Subspace(wasm.ModuleName) + // this line is used by starport scaffolding # stargate/app/paramSubspace return paramsKeeper } -// SimulationManager implements the SimulationApp interface. -func (app *OKP4App) SimulationManager() *module.SimulationManager { +// SimulationManager implements the SimulationApp interface +func (app *App) SimulationManager() *module.SimulationManager { return app.sm } diff --git a/app/encoding.go b/app/encoding.go deleted file mode 100644 index a0376b15..00000000 --- a/app/encoding.go +++ /dev/null @@ -1,16 +0,0 @@ -package app - -import ( - "github.com/cosmos/cosmos-sdk/std" - "github.com/okp4/okp4d/app/params" -) - -// MakeEncodingConfig creates a new EncodingConfig with all modules registered. -func MakeEncodingConfig() params.EncodingConfig { - encodingConfig := params.MakeEncodingConfig() - std.RegisterLegacyAminoCodec(encodingConfig.Amino) - std.RegisterInterfaces(encodingConfig.InterfaceRegistry) - ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) - ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) - return encodingConfig -} diff --git a/app/export.go b/app/export.go index 8a9a03b7..e04a6b5b 100644 --- a/app/export.go +++ b/app/export.go @@ -15,8 +15,10 @@ import ( // ExportAppStateAndValidators exports the state of the application for a genesis // file. -func (app *OKP4App) ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string) (servertypes.ExportedApp, error) { +func (app *App) ExportAppStateAndValidators( + forZeroHeight bool, jailAllowedAddrs []string, +) (servertypes.ExportedApp, error) { + // as if they could withdraw from the start of the next block ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) @@ -48,9 +50,9 @@ func (app *OKP4App) ExportAppStateAndValidators( // prepare for fresh start at zero height // NOTE zero height genesis is a temporary feature which will be deprecated -// in favour of export at a block height -// nolint:funlen -func (app *OKP4App) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { +// +// in favour of export at a block height +func (app *App) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { applyAllowedAddrs := false // check if there is a allowed address list @@ -109,14 +111,23 @@ func (app *OKP4App) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [ feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) app.DistrKeeper.SetFeePool(ctx, feePool) - app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) + err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) + if err != nil { + panic(err) + } return false }) // reinitialize all delegations for _, del := range dels { - app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, del.GetDelegatorAddr(), del.GetValidatorAddr()) - app.DistrKeeper.Hooks().AfterDelegationModified(ctx, del.GetDelegatorAddr(), del.GetValidatorAddr()) + err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, del.GetDelegatorAddr(), del.GetValidatorAddr()) + if err != nil { + panic(err) + } + err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, del.GetDelegatorAddr(), del.GetValidatorAddr()) + if err != nil { + panic(err) + } } // reset context height diff --git a/app/genesis.go b/app/genesis.go index 832c54ff..5bf0c1da 100644 --- a/app/genesis.go +++ b/app/genesis.go @@ -2,6 +2,8 @@ package app import ( "encoding/json" + + "github.com/cosmos/cosmos-sdk/codec" ) // The genesis state of the blockchain is represented here as a map of raw json @@ -14,7 +16,6 @@ import ( type GenesisState map[string]json.RawMessage // NewDefaultGenesisState generates the default state for the application. -func NewDefaultGenesisState() GenesisState { - encodingConfig := MakeEncodingConfig() - return ModuleBasics.DefaultGenesis(encodingConfig.Marshaler) +func NewDefaultGenesisState(cdc codec.JSONCodec) GenesisState { + return ModuleBasics.DefaultGenesis(cdc) } diff --git a/app/params/encoding.go b/app/params/encoding.go deleted file mode 100644 index 3d634abf..00000000 --- a/app/params/encoding.go +++ /dev/null @@ -1,16 +0,0 @@ -package params - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" -) - -// EncodingConfig specifies the concrete encoding types to use for a given app. -// This is provided for compatibility between protobuf and amino implementations. -type EncodingConfig struct { - InterfaceRegistry types.InterfaceRegistry - Marshaler codec.Codec - TxConfig client.TxConfig - Amino *codec.LegacyAmino -} diff --git a/app/params/proto.go b/app/params/proto.go deleted file mode 100644 index 84ff35a3..00000000 --- a/app/params/proto.go +++ /dev/null @@ -1,22 +0,0 @@ -package params - -import ( - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/x/auth/tx" -) - -// MakeEncodingConfig creates an EncodingConfig for an amino based test configuration. -func MakeEncodingConfig() EncodingConfig { - amino := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewProtoCodec(interfaceRegistry) - txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) - - return EncodingConfig{ - InterfaceRegistry: interfaceRegistry, - Marshaler: marshaler, - TxConfig: txCfg, - Amino: amino, - } -} diff --git a/app/simulation_test.go b/app/simulation_test.go new file mode 100644 index 00000000..c5d31aea --- /dev/null +++ b/app/simulation_test.go @@ -0,0 +1,113 @@ +package app_test + +import ( + "os" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/simapp" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + simulationtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + "github.com/okp4/okp4d/app" + "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmtypes "github.com/tendermint/tendermint/types" +) + +func init() { + simapp.GetSimulatorFlags() +} + +type SimApp interface { + cosmoscmd.App + GetBaseApp() *baseapp.BaseApp + AppCodec() codec.Codec + SimulationManager() *module.SimulationManager + ModuleAccountAddrs() map[string]bool + Name() string + LegacyAmino() *codec.LegacyAmino + BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock + EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock + InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain +} + +var defaultConsensusParams = &abci.ConsensusParams{ + Block: &abci.BlockParams{ + MaxBytes: 200000, + MaxGas: 2000000, + }, + Evidence: &tmproto.EvidenceParams{ + MaxAgeNumBlocks: 302400, + MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration + MaxBytes: 10000, + }, + Validator: &tmproto.ValidatorParams{ + PubKeyTypes: []string{ + tmtypes.ABCIPubKeyTypeEd25519, + }, + }, +} + +// BenchmarkSimulation run the chain simulation +// Running using starport command: +// `starport chain simulate -v --numBlocks 200 --blockSize 50` +// Running as go benchmark test: +// `go test -benchmem -run=^$ -bench ^BenchmarkSimulation ./app -NumBlocks=200 -BlockSize 50 -Commit=true -Verbose=true -Enabled=true` +func BenchmarkSimulation(b *testing.B) { + simapp.FlagEnabledValue = true + simapp.FlagCommitValue = true + + config, db, dir, logger, _, err := simapp.SetupSimulation("goleveldb-app-sim", "Simulation") + require.NoError(b, err, "simulation setup failed") + + b.Cleanup(func() { + db.Close() + err = os.RemoveAll(dir) + require.NoError(b, err) + }) + + encoding := cosmoscmd.MakeEncodingConfig(app.ModuleBasics) + + app := app.New( + logger, + db, + nil, + true, + map[int64]bool{}, + app.DefaultNodeHome, + 0, + encoding, + simapp.EmptyAppOptions{}, + ) + + simApp, ok := app.(SimApp) + require.True(b, ok, "can't use simapp") + + // Run randomized simulations + _, simParams, simErr := simulation.SimulateFromSeed( + b, + os.Stdout, + simApp.GetBaseApp(), + simapp.AppStateFn(simApp.AppCodec(), simApp.SimulationManager()), + simulationtypes.RandomAccounts, + simapp.SimulationOperations(simApp, simApp.AppCodec(), config), + simApp.ModuleAccountAddrs(), + config, + simApp.AppCodec(), + ) + + // export state and simParams before the simulation error is checked + err = simapp.CheckExportSimulation(simApp, config, simParams) + require.NoError(b, err) + require.NoError(b, simErr) + + if config.Commit { + simapp.PrintStats(db) + } +} diff --git a/cmd/okp4d/debug_extensions.go b/cmd/okp4d/debug_extensions.go deleted file mode 100644 index d0e72a8b..00000000 --- a/cmd/okp4d/debug_extensions.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "bufio" - "encoding/base64" - "encoding/json" - - "github.com/spf13/cobra" - "github.com/tendermint/tendermint/proto/tendermint/types" -) - -func ExtendDebugCmd(getCmd func(name string) (*cobra.Command, error)) error { - debugCmd, err := getCmd("debug") - if err != nil { - return err - } - - debugCmd.AddCommand(DecodeBlocksCmd()) - return nil -} - -func DecodeBlocksCmd() *cobra.Command { - return &cobra.Command{ - Use: "decode-blocks", - Short: "Decode base64 protobuf encoded blocks in JSON.", - Long: "Read base64 protobuf encoded blocks from stdin and write the corresponding JSON representation on stdout.", - RunE: func(cmd *cobra.Command, args []string) error { - scanner := bufio.NewScanner(cmd.InOrStdin()) - for scanner.Scan() { - strB64 := scanner.Text() - if strB64[0] == '"' { - strB64 = strB64[1:] - } - if strB64[len(strB64)-1] == '"' { - strB64 = strB64[:len(strB64)-1] - } - - bytes, err := base64.StdEncoding.DecodeString(strB64) - if err != nil { - cmd.PrintErrln("could not decode base64 block:", err.Error()) - continue - } - - block := new(types.Block) - if err := block.Unmarshal(bytes); err != nil { - cmd.PrintErrln("could not decode block:", err.Error()) - continue - } - - json, err := json.Marshal(block) - if err != nil { - cmd.PrintErrln("could not marshal block in JSON:", err.Error()) - continue - } - cmd.Println(string(json)) - } - - return nil - }, - } -} diff --git a/cmd/okp4d/genaccounts.go b/cmd/okp4d/genaccounts.go deleted file mode 100644 index 89b2dc6b..00000000 --- a/cmd/okp4d/genaccounts.go +++ /dev/null @@ -1,193 +0,0 @@ -package main - -import ( - "bufio" - "encoding/json" - "errors" - "fmt" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/server" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" -) - -const ( - flagVestingStart = "vesting-start-time" - flagVestingEnd = "vesting-end-time" - flagVestingAmt = "vesting-amount" -) - -// AddGenesisAccountCmd returns add-genesis-account cobra Command. -// nolint:funlen,gocognit,nestif,cyclop -func AddGenesisAccountCmd(defaultNodeHome string) *cobra.Command { - cmd := &cobra.Command{ - Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]", - Short: "Add a genesis account to genesis.json", - Long: `Add a genesis account to genesis.json. The provided account must specify -the account address or key name and a list of initial coins. If a key name is given, -the address will be looked up in the local Keybase. The list of initial tokens must -contain valid denominations. Accounts may optionally be supplied with vesting parameters. -`, - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - serverCtx := server.GetServerContextFromCmd(cmd) - config := serverCtx.Config - - config.SetRoot(clientCtx.HomeDir) - - var kr keyring.Keyring - addr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - inBuf := bufio.NewReader(cmd.InOrStdin()) - keyringBackend, err := cmd.Flags().GetString(flags.FlagKeyringBackend) - if err != nil { - return fmt.Errorf("failed to parse keyring backend: %w", err) - } - if keyringBackend != "" && clientCtx.Keyring == nil { - var err error - kr, err = keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf) - if err != nil { - return err - } - } else { - kr = clientCtx.Keyring - } - - info, err := kr.Key(args[0]) - if err != nil { - return fmt.Errorf("failed to get address from Keyring: %w", err) - } - addr = info.GetAddress() - } - - coins, err := sdk.ParseCoinsNormalized(args[1]) - if err != nil { - return fmt.Errorf("failed to parse coins: %w", err) - } - - vestingStart, err := cmd.Flags().GetInt64(flagVestingStart) - if err != nil { - return fmt.Errorf("failed to parse vesting start: %w", err) - } - vestingEnd, err := cmd.Flags().GetInt64(flagVestingEnd) - if err != nil { - return fmt.Errorf("failed to parse vesting end: %w", err) - } - vestingAmtStr, err := cmd.Flags().GetString(flagVestingAmt) - if err != nil { - return fmt.Errorf("failed to parse vesting amount: %w", err) - } - - vestingAmt, err := sdk.ParseCoinsNormalized(vestingAmtStr) - if err != nil { - return fmt.Errorf("failed to parse vesting amount: %w", err) - } - - // create concrete account type based on input parameters - var genAccount authtypes.GenesisAccount - - balances := banktypes.Balance{Address: addr.String(), Coins: coins.Sort()} - baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0) - - if !vestingAmt.IsZero() { - baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) - - if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) || - baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) { - return errors.New("vesting amount cannot be greater than total amount") - } - - switch { - case vestingStart != 0 && vestingEnd != 0: - genAccount = authvesting.NewContinuousVestingAccountRaw(baseVestingAccount, vestingStart) - - case vestingEnd != 0: - genAccount = authvesting.NewDelayedVestingAccountRaw(baseVestingAccount) - - default: - return errors.New("invalid vesting parameters; must supply start and end time or end time") - } - } else { - genAccount = baseAccount - } - - if err := genAccount.Validate(); err != nil { - return fmt.Errorf("failed to validate new genesis account: %w", err) - } - - genFile := config.GenesisFile() - appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile) - if err != nil { - return fmt.Errorf("failed to unmarshal genesis state: %w", err) - } - - authGenState := authtypes.GetGenesisStateFromAppState(clientCtx.Codec, appState) - - accs, err := authtypes.UnpackAccounts(authGenState.Accounts) - if err != nil { - return fmt.Errorf("failed to get accounts from any: %w", err) - } - - if accs.Contains(addr) { - return fmt.Errorf("cannot add account at existing address %s", addr) - } - - // Add the new account to the set of genesis accounts and sanitize the - // accounts afterwards. - accs = append(accs, genAccount) - accs = authtypes.SanitizeGenesisAccounts(accs) - - genAccs, err := authtypes.PackAccounts(accs) - if err != nil { - return fmt.Errorf("failed to convert accounts into any's: %w", err) - } - authGenState.Accounts = genAccs - - authGenStateBz, err := clientCtx.Codec.MarshalJSON(&authGenState) - if err != nil { - return fmt.Errorf("failed to marshal auth genesis state: %w", err) - } - - appState[authtypes.ModuleName] = authGenStateBz - - bankGenState := banktypes.GetGenesisStateFromAppState(clientCtx.Codec, appState) - bankGenState.Balances = append(bankGenState.Balances, balances) - bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) - bankGenState.Supply = bankGenState.Supply.Add(balances.Coins...) - - bankGenStateBz, err := clientCtx.Codec.MarshalJSON(bankGenState) - if err != nil { - return fmt.Errorf("failed to marshal bank genesis state: %w", err) - } - - appState[banktypes.ModuleName] = bankGenStateBz - - appStateJSON, err := json.Marshal(appState) - if err != nil { - return fmt.Errorf("failed to marshal application genesis state: %w", err) - } - - genDoc.AppState = appStateJSON - return genutil.ExportGenesisFile(genDoc, genFile) - }, - } - - cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") - cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test)") - cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts") - cmd.Flags().Int64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts") - cmd.Flags().Int64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts") - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/cmd/okp4d/genwasm.go b/cmd/okp4d/genwasm.go deleted file mode 100644 index fba3d503..00000000 --- a/cmd/okp4d/genwasm.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/spf13/cobra" - - wasmcli "github.com/CosmWasm/wasmd/x/wasm/client/cli" -) - -func AddGenesisWasmMsgCmd(defaultNodeHome string) *cobra.Command { - txCmd := &cobra.Command{ - Use: "add-wasm-genesis-message", - Short: "Wasm genesis subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - genesisIO := wasmcli.NewDefaultGenesisIO() - txCmd.AddCommand( - wasmcli.GenesisStoreCodeCmd(defaultNodeHome, genesisIO), - wasmcli.GenesisInstantiateContractCmd(defaultNodeHome, genesisIO), - wasmcli.GenesisExecuteContractCmd(defaultNodeHome, genesisIO), - wasmcli.GenesisListContractsCmd(defaultNodeHome, genesisIO), - wasmcli.GenesisListCodesCmd(defaultNodeHome, genesisIO), - ) - return txCmd -} diff --git a/cmd/okp4d/main.go b/cmd/okp4d/main.go index 74a63e68..ef106626 100644 --- a/cmd/okp4d/main.go +++ b/cmd/okp4d/main.go @@ -1,40 +1,25 @@ package main import ( - "fmt" "os" svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + "github.com/ignite/cli/ignite/pkg/xstrings" "github.com/okp4/okp4d/app" - "github.com/spf13/cobra" ) func main() { - rootCmd, _ := NewRootCmd() - - if err := Extend(rootCmd); err != nil { - os.Exit(1) - } - - if err := svrcmd.Execute(rootCmd, app.DefaultNodeHome); err != nil { + rootCmd, _ := cosmoscmd.NewRootCmd( + app.Name, + app.AccountAddressPrefix, + app.DefaultNodeHome, + xstrings.NoDash(app.Name), + app.ModuleBasics, + app.New, + // this line is used by starport scaffolding # root/arguments + ) + if err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome); err != nil { os.Exit(1) } } - -func Extend(cmd *cobra.Command) error { - cmdGetter := func(name string) (*cobra.Command, error) { - return getSubCommand(cmd, name) - } - - return ExtendDebugCmd(cmdGetter) -} - -func getSubCommand(cmd *cobra.Command, name string) (*cobra.Command, error) { - for i, v := range cmd.Commands() { - if v.Name() == name { - return cmd.Commands()[i], nil - } - } - - return nil, fmt.Errorf("cannot find '%s' command", name) -} diff --git a/cmd/okp4d/root.go b/cmd/okp4d/root.go deleted file mode 100644 index d54a75ae..00000000 --- a/cmd/okp4d/root.go +++ /dev/null @@ -1,280 +0,0 @@ -package main - -import ( - "errors" - "io" - "os" - "path/filepath" - - "github.com/CosmWasm/wasmd/x/wasm" - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/config" - "github.com/cosmos/cosmos-sdk/client/debug" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/keys" - "github.com/cosmos/cosmos-sdk/client/rpc" - "github.com/cosmos/cosmos-sdk/server" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/snapshots" - "github.com/cosmos/cosmos-sdk/store" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - "github.com/okp4/okp4d/app" - "github.com/okp4/okp4d/app/params" - "github.com/prometheus/client_golang/prometheus" - "github.com/spf13/cast" - "github.com/spf13/cobra" - tmcli "github.com/tendermint/tendermint/libs/cli" - dbm "github.com/tendermint/tm-db" - - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - "github.com/tendermint/tendermint/libs/log" -) - -// NewRootCmd creates a new root command for the OKP4 application. -func NewRootCmd() (*cobra.Command, params.EncodingConfig) { - cfg := sdk.GetConfig() - cfg.SetBech32PrefixForAccount(app.Bech32PrefixAccAddr, app.Bech32PrefixAccPub) - cfg.SetBech32PrefixForValidator(app.Bech32PrefixValAddr, app.Bech32PrefixValPub) - cfg.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) - cfg.SetAddressVerifier(wasmtypes.VerifyAddressLen()) - cfg.Seal() - - encodingConfig := app.MakeEncodingConfig() - initClientCtx := client.Context{}. - WithCodec(encodingConfig.Marshaler). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). - WithInput(os.Stdin). - WithAccountRetriever(types.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). - WithHomeDir(app.DefaultNodeHome). - WithViper(app.Name) - - rootCmd := &cobra.Command{ - Use: app.Name, - Short: `OKP4 Daemon - a revolutionary public PoS layer 1 specifically designed to enable communities to trustlessly share data, -algorithms and resources to build the Dataverse.`, - PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - // set the default command outputs - cmd.SetOut(cmd.OutOrStdout()) - cmd.SetErr(cmd.ErrOrStderr()) - initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) - if err != nil { - return err - } - initClientCtx, err = config.ReadFromClientConfig(initClientCtx) - if err != nil { - return err - } - - if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { - return err - } - - if err := server.InterceptConfigsPreRunHandler(cmd, "", nil); err != nil { - return err - } - - return nil - }, - } - - initRootCmd( - rootCmd, - encodingConfig, - ) - - return rootCmd, encodingConfig -} - -func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { - rootCmd.AddCommand( - genutilcli.InitCmd(app.ModuleBasics, app.DefaultNodeHome), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.ValidateGenesisCmd(app.ModuleBasics), - AddGenesisAccountCmd(app.DefaultNodeHome), - AddGenesisWasmMsgCmd(app.DefaultNodeHome), - tmcli.NewCompletionCmd(rootCmd, true), - debug.Cmd(), - config.Cmd(), - ) - - ac := appCreator{ - encCfg: encodingConfig, - } - server.AddCommands(rootCmd, app.DefaultNodeHome, ac.newApp, ac.appExport, addModuleInitFlags) - - // add keybase, auxiliary RPC, query, and tx child commands - rootCmd.AddCommand( - rpc.StatusCommand(), - queryCommand(), - txCommand(), - keys.Commands(app.DefaultNodeHome), - ) -} - -func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) - wasm.AddModuleInitFlags(startCmd) -} - -func queryCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "query", - Aliases: []string{"q"}, - Short: "Querying subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetAccountCmd(), - rpc.ValidatorCommand(), - rpc.BlockCommand(), - authcmd.QueryTxsByEventsCmd(), - authcmd.QueryTxCmd(), - ) - - app.ModuleBasics.AddQueryCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -func txCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "tx", - Short: "Transactions subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetSignCommand(), - authcmd.GetSignBatchCommand(), - authcmd.GetMultiSignCommand(), - authcmd.GetMultiSignBatchCmd(), - authcmd.GetValidateSignaturesCommand(), - flags.LineBreak, - authcmd.GetBroadcastCommand(), - authcmd.GetEncodeCommand(), - authcmd.GetDecodeCommand(), - ) - - app.ModuleBasics.AddTxCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -type appCreator struct { - encCfg params.EncodingConfig -} - -func (ac appCreator) newApp( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - appOpts servertypes.AppOptions, -) servertypes.Application { - var cache sdk.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } - - skipUpgradeHeights := make(map[int64]bool) - for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { - skipUpgradeHeights[int64(h)] = true - } - - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - - snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) - if err != nil { - panic(err) - } - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - if err != nil { - panic(err) - } - var wasmOpts []wasm.Option - if cast.ToBool(appOpts.Get("telemetry.enabled")) { - wasmOpts = append(wasmOpts, wasmkeeper.WithVMCacheMetrics(prometheus.DefaultRegisterer)) - } - - return app.NewOKP4App(logger, db, traceStore, true, skipUpgradeHeights, - cast.ToString(appOpts.Get(flags.FlagHome)), - cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - ac.encCfg, - app.GetEnabledProposals(), - appOpts, - wasmOpts, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), - baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), - baseapp.SetSnapshotStore(snapshotStore), - baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval))), - baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent))), - ) -} - -func (ac appCreator) appExport( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - height int64, - forZeroHeight bool, - jailAllowedAddrs []string, - appOpts servertypes.AppOptions, -) (servertypes.ExportedApp, error) { - var okp4App *app.OKP4App - homePath, ok := appOpts.Get(flags.FlagHome).(string) - if !ok || homePath == "" { - return servertypes.ExportedApp{}, errors.New("application home is not set") - } - - loadLatest := height == -1 - var emptyWasmOpts []wasm.Option - okp4App = app.NewOKP4App( - logger, - db, - traceStore, - loadLatest, - map[int64]bool{}, - homePath, - cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - ac.encCfg, - app.GetEnabledProposals(), - appOpts, - emptyWasmOpts, - ) - - if height != -1 { - if err := okp4App.LoadHeight(height); err != nil { - return servertypes.ExportedApp{}, err - } - } - - return okp4App.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) -} diff --git a/docs/okp4-banner.png b/docs/okp4-banner.png deleted file mode 100644 index 801825e26b24e26c89317c3de9bd9bed9385cf59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 679836 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

bT#vG6}p%$cg$&%}$yohcCQpXKa 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%0D1cx98T? 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ξ0yZZE~Y<30>5_m1S<)|W=MNE2GC*n#p2K4F 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 diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index b87750c9..09b0e8ff 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -198,9 +198,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -834,38 +835,21 @@ paths: type: string tags: - Query - /cosmos/auth/v1beta1/params: + '/cosmos/auth/v1beta1/address_by_id/{id}': get: - summary: Params queries all parameters. - operationId: CosmosAuthV1Beta1Params + summary: AccountAddressByID returns account address based on account id + operationId: CosmosAuthV1Beta1AccountAddressByID responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + account_address: + type: string + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method default: description: An unexpected error response. schema: @@ -1051,228 +1035,239 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: id + in: path + required: true + type: string + format: int64 tags: - Query - /cosmos/authz/v1beta1/grants: + /cosmos/auth/v1beta1/bech32: get: - summary: 'Returns list of `Authorization`, granted to the grantee by the granter.' - operationId: CosmosAuthzV1Beta1Grants + summary: Bech32Prefix queries bech32Prefix + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthV1Beta1Bech32Prefix responses: '200': description: A successful response. schema: type: object properties: - grants: + bech32_prefix: + type: string + description: >- + Bech32PrefixResponse is the response type for Bech32Prefix rpc + method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - one "/" character. The last segment of the URL's - path must represent + protocol buffer message. This string must contain at + least - the fully qualified name of the type (as in + one "/" character. The last segment of the URL's path + must represent - `path/google.protobuf.Duration`). The name should be - in a canonical form + the fully qualified name of the type (as in - (e.g., leading "." is not accepted). + `path/google.protobuf.Duration`). The name should be in + a canonical form + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + In practice, teams usually precompile into the binary + all types that they - scheme `http`, `https`, or no scheme, one can - optionally set up a type + expect it to use in the context of Any. However, for + URLs which use the - server that maps type URLs to message definitions as - follows: + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently available - in the official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available in + the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any values + in the form + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by - default use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + The pack methods provided by protobuf library will by + default use - methods only use the fully qualified type name after the - last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + methods only use the fully qualified type name after the + last '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + name "y.z". - JSON - ==== + JSON - The JSON representation of an `Any` value uses the - regular + ==== - representation of the deserialized, embedded message, - with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. - Example: + representation of the deserialized, embedded message, with + an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. + Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a - custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded - adding a field + If the embedded message type is well-known and has a custom + JSON - `value` which holds the custom JSON in addition to the - `@type` + representation, that representation will be embedded adding + a field - field. Example (for message - [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the + `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: >- - authorizations is a list of grants granted for grantee by - granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + field. Example (for message [google.protobuf.Duration][]): - was set, its value is undefined otherwise + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + '/cosmos/auth/v1beta1/bech32/{address_bytes}': + get: + summary: AddressBytesToString converts Account Address bytes to string + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthV1Beta1AddressBytesToString + responses: + '200': + description: A successful response. + schema: + type: object + properties: + address_string: + type: string description: >- - QueryGrantsResponse is the response type for the - Query/Authorizations RPC method. + AddressBytesToStringResponse is the response type for + AddressString rpc method. + + + Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: @@ -1459,316 +1454,237 @@ paths: "value": "1.212s" } parameters: - - name: granter - in: query - required: false - type: string - - name: grantee - in: query - required: false - type: string - - name: msg_type_url - description: >- - Optional, msg_type_url, when set, will query only grants matching - given msg type. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false + - name: address_bytes + in: path + required: true type: string format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - '/cosmos/authz/v1beta1/grants/grantee/{grantee}': + '/cosmos/auth/v1beta1/bech32/{address_string}': get: - summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. - description: 'Since: cosmos-sdk 0.45.2' - operationId: CosmosAuthzV1Beta1GranteeGrants + summary: AddressStringToBytes converts Address string to bytes + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthV1Beta1AddressStringToBytes responses: '200': description: A successful response. schema: type: object properties: - grants: + address_bytes: + type: string + format: byte + description: >- + AddressStringToBytesResponse is the response type for AddressBytes + rpc method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - granter: - type: string - grantee: + '@type': type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - the fully qualified name of the type (as in + protocol buffer message. This string must contain at + least - `path/google.protobuf.Duration`). The name should be - in a canonical form + one "/" character. The last segment of the URL's path + must represent - (e.g., leading "." is not accepted). + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in + a canonical form - In practice, teams usually precompile into the - binary all types that they + (e.g., leading "." is not accepted). - expect it to use in the context of Any. However, for - URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + In practice, teams usually precompile into the binary + all types that they - server that maps type URLs to message definitions as - follows: + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally + set up a type - * If no scheme is provided, `https` is assumed. + server that maps type URLs to message definitions as + follows: - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available - in the official + * If no scheme is provided, `https` is assumed. - protobuf release, and it is not used for type URLs - beginning with + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - type.googleapis.com. + Note: this functionality is not currently available in + the official + protobuf release, and it is not used for type URLs + beginning with - Schemes other than `http`, `https` (or the empty - scheme) might be + type.googleapis.com. - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - URL that describes the type of the serialized message. + Schemes other than `http`, `https` (or the empty scheme) + might be + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Protobuf library provides support to pack/unpack Any - values in the form + URL that describes the type of the serialized message. - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any values + in the form - Example 1: Pack and unpack a message in C++. + of utility functions or additional generated methods of the + Any type. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 3: Pack and unpack a message in Python. + Example 2: Pack and unpack a message in Java. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 4: Pack and unpack a message in Go + Example 3: Pack and unpack a message in Python. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - The pack methods provided by protobuf library will by - default use + Example 4: Pack and unpack a message in Go - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - methods only use the fully qualified type name after the - last '/' + The pack methods provided by protobuf library will by + default use - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - name "y.z". + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + name "y.z". - JSON - ==== - The JSON representation of an `Any` value uses the - regular + JSON - representation of the deserialized, embedded message, - with an + ==== - additional field `@type` which contains the type URL. - Example: + The JSON representation of an `Any` value uses the regular - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + representation of the deserialized, embedded message, with + an - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + additional field `@type` which contains the type URL. + Example: - If the embedded message type is well-known and has a - custom JSON + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - representation, that representation will be embedded - adding a field + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - `value` which holds the custom JSON in addition to the - `@type` + If the embedded message type is well-known and has a custom + JSON - field. Example (for message - [google.protobuf.Duration][]): + representation, that representation will be embedded adding + a field - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. + `value` which holds the custom JSON in addition to the + `@type` - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + field. Example (for message [google.protobuf.Duration][]): - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - default: - description: An unexpected error response. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address_string + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/module_accounts: + get: + summary: ModuleAccounts returns all the existing module accounts. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthV1Beta1ModuleAccounts + responses: + '200': + description: A successful response. schema: type: object properties: - code: - type: integer - format: int32 - message: - type: string - details: + accounts: type: array items: type: object @@ -1943,126 +1859,470 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: grantee - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + description: >- + QueryModuleAccountsResponse is the response type for the + Query/ModuleAccounts RPC method. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/authz/v1beta1/grants/granter/{granter}': - get: - summary: 'GranterGrants returns list of `GrantAuthorization`, granted by granter.' - description: 'Since: cosmos-sdk 0.45.2' - operationId: CosmosAuthzV1Beta1GranterGrants - responses: - '200': - description: A successful response. + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. schema: type: object properties: - grants: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - granter: - type: string - grantee: + '@type': type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/auth/v1beta1/params: + get: + summary: Params queries all parameters. + operationId: CosmosAuthV1Beta1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/authz/v1beta1/grants: + get: + summary: 'Returns list of `Authorization`, granted to the grantee by the granter.' + operationId: CosmosAuthzV1Beta1Grants + responses: + '200': + description: A successful response. + schema: + type: object + properties: + grants: + type: array + items: + type: object + properties: + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] @@ -2204,13 +2464,20 @@ paths: expiration: type: string format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. + title: >- + time when the grant will expire and will be pruned. If + null, then the grant - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: >- + authorizations is a list of grants granted for grantee by + granter. pagination: description: pagination defines an pagination for the response. type: object @@ -2218,9 +2485,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -2230,8 +2498,8 @@ paths: was set, its value is undefined otherwise description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. + QueryGrantsResponse is the response type for the + Query/Authorizations RPC method. default: description: An unexpected error response. schema: @@ -2419,8 +2687,19 @@ paths: } parameters: - name: granter - in: path - required: true + in: query + required: false + type: string + - name: grantee + in: query + required: false + type: string + - name: msg_type_url + description: >- + Optional, msg_type_url, when set, will query only grants matching + given msg type. + in: query + required: false type: string - name: pagination.key description: |- @@ -2480,78 +2759,419 @@ paths: type: boolean tags: - Query - '/cosmos/bank/v1beta1/balances/{address}': + '/cosmos/authz/v1beta1/grants/grantee/{grantee}': get: - summary: AllBalances queries the balance of all coins for a single account. - operationId: CosmosBankV1Beta1AllBalances + summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthzV1Beta1GranteeGrants responses: '200': description: A successful response. schema: type: object properties: - balances: + grants: type: array items: type: object properties: - denom: + granter: type: string - amount: + grantee: type: string - description: >- - Coin defines a token with a denomination and an amount. + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + protocol buffer message. This string must contain at + least - NOTE: The amount field is an Int which implements the custom - method + one "/" character. The last segment of the URL's + path must represent - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + the fully qualified name of the type (as in - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the - Query/AllBalances RPC + `path/google.protobuf.Duration`). The name should be + in a canonical form - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: - - name: address - description: address is the address to query balances for. + - name: grantee in: path required: true type: string @@ -2613,163 +3233,221 @@ paths: type: boolean tags: - Query - '/cosmos/bank/v1beta1/balances/{address}/by_denom': + '/cosmos/authz/v1beta1/grants/granter/{granter}': get: - summary: Balance queries the balance of a single coin for a single account. - operationId: CosmosBankV1Beta1Balance + summary: 'GranterGrants returns list of `GrantAuthorization`, granted by granter.' + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosAuthzV1Beta1GranterGrants responses: '200': description: A successful response. schema: type: object properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: + grants: type: array items: type: object properties: - '@type': + granter: type: string - additionalProperties: {} - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - /cosmos/bank/v1beta1/denoms_metadata: - get: - summary: >- - DenomsMetadata queries the client metadata for all registered coin - denominations. - operationId: CosmosBankV1Beta1DenomsMetadata - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: + grantee: type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given - denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - raise the base_denom to in order to equal the - given DenomUnit's denom + protocol buffer message. This string must contain at + least - 1 denom = 1^exponent base_denom + one "/" character. The last segment of the URL's + path must represent - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with + the fully qualified name of the type (as in - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a - given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges - (eg: ATOM). This can + `path/google.protobuf.Duration`). The name should be + in a canonical form - be the same as the display. + (e.g., leading "." is not accepted). - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the - registered tokens. + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -2779,10 +3457,8 @@ paths: was set, its value is undefined otherwise description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC - - method. + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. default: description: An unexpected error response. schema: @@ -2800,8 +3476,179 @@ paths: properties: '@type': type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: + - name: granter + in: path + required: true + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -2860,90 +3707,56 @@ paths: type: boolean tags: - Query - '/cosmos/bank/v1beta1/denoms_metadata/{denom}': + '/cosmos/bank/v1beta1/balances/{address}': get: - summary: DenomsMetadata queries the client metadata of a given coin denomination. - operationId: CosmosBankV1Beta1DenomMetadata + summary: AllBalances queries the balance of all coins for a single account. + operationId: CosmosBankV1Beta1AllBalances responses: '200': description: A successful response. schema: type: object properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom - unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the given - DenomUnit's denom + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - 1 denom = 1^exponent base_denom - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with + NOTE: The amount field is an Int which implements the custom + method - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a given - coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: + signatures required by gogoproto. + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: type: string + format: byte description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. + was set, its value is undefined otherwise description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC + QueryAllBalancesResponse is the response type for the + Query/AllBalances RPC method. default: @@ -2965,46 +3778,97 @@ paths: type: string additionalProperties: {} parameters: - - name: denom - description: denom is the coin denom to query the metadata for. + - name: address + description: address is the address to query balances for. in: path required: true type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - /cosmos/bank/v1beta1/params: + '/cosmos/bank/v1beta1/balances/{address}/by_denom': get: - summary: Params queries the parameters of x/bank module. - operationId: CosmosBankV1Beta1Params + summary: Balance queries the balance of a single coin for a single account. + operationId: CosmosBankV1Beta1Balance responses: '200': description: A successful response. schema: type: object properties: - params: + balance: type: object properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. + QueryBalanceResponse is the response type for the Query/Balance + RPC method. default: description: An unexpected error response. schema: @@ -3023,38 +3887,70 @@ paths: '@type': type: string additionalProperties: {} + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string tags: - Query - '/cosmos/bank/v1beta1/spendable_balances/{address}': + '/cosmos/bank/v1beta1/denom_owners/{denom}': get: - summary: |- - SpendableBalances queries the spenable balance of all coins for a single - account. - operationId: CosmosBankV1Beta1SpendableBalances + summary: >- + DenomOwners queries for all account addresses that own a particular + token + + denomination. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosBankV1Beta1DenomOwners responses: '200': description: A successful response. schema: type: object properties: - balances: + denom_owners: type: array items: type: object properties: - denom: - type: string - amount: + address: type: string + description: >- + address defines the address that owns a particular + denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. description: >- - Coin defines a token with a denomination and an amount. + DenomOwner defines structure representing an account that + owns or holds a + particular denominated token. It contains the account + address and account - NOTE: The amount field is an Int which implements the custom - method + balance of the denominated token. - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. + + Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object @@ -3062,9 +3958,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -3074,10 +3971,11 @@ paths: was set, its value is undefined otherwise description: >- - QuerySpendableBalancesResponse defines the gRPC response structure - for querying + QueryDenomOwnersResponse defines the RPC response of a DenomOwners + RPC query. - an account's spendable balances. + + Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: @@ -3097,8 +3995,10 @@ paths: type: string additionalProperties: {} parameters: - - name: address - description: address is the address to query spendable balances for. + - name: denom + description: >- + denom defines the coin denomination to query all account holders + for. in: path required: true type: string @@ -3160,47 +4060,123 @@ paths: type: boolean tags: - Query - /cosmos/bank/v1beta1/supply: + /cosmos/bank/v1beta1/denoms_metadata: get: - summary: TotalSupply queries the total supply of all coins. - operationId: CosmosBankV1Beta1TotalSupply + summary: |- + DenomsMetadata queries the client metadata for all registered coin + denominations. + operationId: CosmosBankV1Beta1DenomsMetadata responses: '200': description: A successful response. schema: type: object properties: - supply: + metadatas: type: array items: type: object properties: - denom: + description: type: string - amount: + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given + denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + + raise the base_denom to in order to equal the + given DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a + given coin + base: type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges + (eg: ATOM). This can + be the same as the display. - NOTE: The amount field is an Int which implements the custom - method - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. - Since: cosmos-sdk 0.43 + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the + registered tokens. + pagination: + description: pagination defines the pagination in the response. type: object properties: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -3209,11 +4185,11 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the - Query/TotalSupply RPC + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC - method + method. default: description: An unexpected error response. schema: @@ -3291,34 +4267,110 @@ paths: type: boolean tags: - Query - '/cosmos/bank/v1beta1/supply/{denom}': + '/cosmos/bank/v1beta1/denoms_metadata/{denom}': get: - summary: SupplyOf queries the supply of a single coin. - operationId: CosmosBankV1Beta1SupplyOf + summary: DenomsMetadata queries the client metadata of a given coin denomination. + operationId: CosmosBankV1Beta1DenomMetadata responses: '200': description: A successful response. schema: type: object properties: - amount: + metadata: type: object properties: - denom: + description: type: string - amount: + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + be the same as the display. - NOTE: The amount field is an Int which implements the custom - method - signatures required by gogoproto. + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf - RPC method. + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. default: description: An unexpected error response. schema: @@ -3339,579 +4391,123 @@ paths: additionalProperties: {} parameters: - name: denom - description: denom is the coin denom to query balances for. + description: denom is the coin denom to query the metadata for. in: path required: true type: string tags: - Query - /cosmos/base/tendermint/v1beta1/blocks/latest: + /cosmos/bank/v1beta1/params: get: - summary: GetLatestBlock returns the latest block. - operationId: CosmosBaseTendermintV1Beta1GetLatestBlock + summary: Params queries the parameters of x/bank module. + operationId: CosmosBankV1Beta1Params responses: '200': description: A successful response. schema: type: object properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: + params: type: object properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status + (whether a denom is - including all blockchain data structures and the rules - of the application's + sendable). + default_send_enabled: + type: boolean + description: Params defines the parameters for the bank module. + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + '/cosmos/bank/v1beta1/spendable_balances/{address}': + get: + summary: |- + SpendableBalances queries the spenable balance of all coins for a single + account. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosBankV1Beta1SpendableBalances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - NOTE: not all txs here are valid. We're just agreeing - on the order first. + NOTE: The amount field is an Int which implements the custom + method - This means that block.AppHash does not include these - txs. + signatures required by gogoproto. + description: balances is the spendable balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. + total is total number of results available if + PageRequest.count_total - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for + was set, its value is undefined otherwise + description: >- + QuerySpendableBalancesResponse defines the gRPC response structure + for querying - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, + an account's spendable balances. - including all blockchain data structures - and the rules of the application's - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting to mislead a light - client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - description: >- - GetLatestBlockResponse is the response type for the - Query/GetLatestBlock RPC method. + Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: @@ -3929,35 +4525,390 @@ paths: properties: '@type': type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + additionalProperties: {} + parameters: + - name: address + description: address is the address to query spendable balances for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - protocol buffer message. This string must contain at - least + It is less efficient than using key. Only one of offset or key + should - one "/" character. The last segment of the URL's path - must represent + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - the fully qualified name of the type (as in + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - `path/google.protobuf.Duration`). The name should be in - a canonical form + a count of the total number of items available for pagination in + UIs. - (e.g., leading "." is not accepted). + count_total is only respected when offset is used. It is ignored + when key + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - In practice, teams usually precompile into the binary - all types that they - expect it to use in the context of Any. However, for - URLs which use the + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/supply: + get: + summary: TotalSupply queries the total supply of all coins. + operationId: CosmosBankV1Beta1TotalSupply + responses: + '200': + description: A successful response. + schema: + type: object + properties: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - scheme `http`, `https`, or no scheme, one can optionally - set up a type - server that maps type URLs to message definitions as - follows: + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: |- + pagination defines the pagination in the response. + + Since: cosmos-sdk 0.43 + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the + Query/TotalSupply RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/supply/by_denom: + get: + summary: SupplyOf queries the supply of a single coin. + operationId: CosmosBankV1Beta1SupplyOf + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/base/tendermint/v1beta1/abci_query: + get: + summary: >- + ABCIQuery defines a query handler that supports ABCI queries directly to + + the application, bypassing Tendermint completely. The ABCI query must + + contain a valid and supported path, including app, custom, p2p, and + store. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosBaseTendermintV1Beta1ABCIQuery + responses: + '200': + description: A successful response. + schema: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + info: + type: string + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + proof_ops: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle + root. The data could + + be arbitrary format, providing nessecary data for + example neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type + defined in + + Tendermint. + description: >- + ProofOps is Merkle proof defined by the list of ProofOps. + + + Note: This type is a duplicate of the ProofOps proto type + defined in + + Tendermint. + height: + type: string + format: int64 + codespace: + type: string + description: >- + ABCIQueryResponse defines the response structure for the ABCIQuery + gRPC + + query. + + + Note: This type is a duplicate of the ResponseQuery proto type + defined in + + Tendermint. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: * If no scheme is provided, `https` is assumed. @@ -4097,12 +5048,31 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: data + in: query + required: false + type: string + format: byte + - name: path + in: query + required: false + type: string + - name: height + in: query + required: false + type: string + format: int64 + - name: prove + in: query + required: false + type: boolean tags: - Service - '/cosmos/base/tendermint/v1beta1/blocks/{height}': + /cosmos/base/tendermint/v1beta1/blocks/latest: get: - summary: GetBlockByHeight queries block for given height. - operationId: CosmosBaseTendermintV1Beta1GetBlockByHeight + summary: GetLatestBlock returns the latest block. + operationId: CosmosBaseTendermintV1Beta1GetLatestBlock responses: '200': description: A successful response. @@ -4127,6 +5097,7 @@ paths: title: PartsetHeader title: BlockID block: + title: 'Deprecated: please use `sdk_block` instead' type: object properties: header: @@ -4663,486 +5634,561 @@ paths: description: >- Commit contains the evidence that a block was committed by a set of validators. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - tags: - - Service - /cosmos/base/tendermint/v1beta1/node_info: - get: - summary: GetNodeInfo queries the current node info. - operationId: CosmosBaseTendermintV1Beta1GetNodeInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - default_node_info: + sdk_block: + title: 'Since: cosmos-sdk 0.47' type: object properties: - protocol_version: + header: type: object properties: - p2p: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: type: string - format: uint64 - block: + height: type: string - format: uint64 - app: + format: int64 + time: type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: type: string - rpc_address: + format: byte + title: hashes of block data + data_hash: type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the request type for the Query/GetNodeInfo - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer + address, formatted as a Bech32 string. - the fully qualified name of the type (as in + In Tendermint, this type is `bytes`, but in the SDK, + we convert it to a Bech32 string - `path/google.protobuf.Duration`). The name should be in - a canonical form + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - (e.g., leading "." is not accepted). + NOTE: not all txs here are valid. We're just agreeing + on the order first. + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - In practice, teams usually precompile into the binary - all types that they + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - expect it to use in the context of Any. However, for - URLs which use the + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - scheme `http`, `https`, or no scheme, one can optionally - set up a type + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, - `value` which holds the custom JSON in addition to the - `@type` + including all blockchain data structures + and the rules of the application's - field. Example (for message [google.protobuf.Duration][]): + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a + Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + description: >- + Block is tendermint type Block, with the Header proposer + address - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - /cosmos/base/tendermint/v1beta1/syncing: - get: - summary: GetSyncing queries node syncing. - operationId: CosmosBaseTendermintV1Beta1GetSyncing - responses: - '200': - description: A successful response. - schema: - type: object - properties: - syncing: - type: boolean + field converted to bech32 string. description: >- - GetSyncingResponse is the response type for the Query/GetSyncing - RPC method. + GetLatestBlockResponse is the response type for the + Query/GetLatestBlock RPC + + method. default: description: An unexpected error response. schema: @@ -5330,349 +6376,1246 @@ paths: } tags: - Service - /cosmos/base/tendermint/v1beta1/validatorsets/latest: + '/cosmos/base/tendermint/v1beta1/blocks/{height}': get: - summary: GetLatestValidatorSet queries latest validator-set. - operationId: CosmosBaseTendermintV1Beta1GetLatestValidatorSet + summary: GetBlockByHeight queries block for given height. + operationId: CosmosBaseTendermintV1Beta1GetBlockByHeight responses: '200': description: A successful response. schema: type: object properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. + block_id: type: object properties: - next_key: + hash: type: string format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + including all blockchain data structures and the rules + of the application's - Note: this functionality is not currently available in - the official + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - protobuf release, and it is not used for type URLs - beginning with + NOTE: not all txs here are valid. We're just agreeing + on the order first. - type.googleapis.com. + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - Schemes other than `http`, `https` (or the empty scheme) - might be + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - URL that describes the type of the serialized message. + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + including all blockchain data structures + and the rules of the application's - Protobuf library provides support to pack/unpack Any values - in the form + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a + Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - of utility functions or additional generated methods of the - Any type. + including all blockchain data structures and the rules + of the application's + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer + address, formatted as a Bech32 string. - Example 1: Pack and unpack a message in C++. + In Tendermint, this type is `bytes`, but in the SDK, + we convert it to a Bech32 string - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - Example 2: Pack and unpack a message in Java. + NOTE: not all txs here are valid. We're just agreeing + on the order first. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - Example 3: Pack and unpack a message in Python. + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - Example 4: Pack and unpack a message in Go + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - foo := &pb.Foo{...} + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a + Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + description: >- + Block is tendermint type Block, with the Header proposer + address + + field converted to bech32 string. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight + + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} any, err := anypb.New(foo) if err != nil { ... @@ -5739,80 +7682,502 @@ paths: "value": "1.212s" } parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: height + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + format: int64 tags: - Service - '/cosmos/base/tendermint/v1beta1/validatorsets/{height}': + /cosmos/base/tendermint/v1beta1/node_info: get: - summary: GetValidatorSetByHeight queries validator-set at a given height. - operationId: CosmosBaseTendermintV1Beta1GetValidatorSetByHeight + summary: GetNodeInfo queries the current node info. + operationId: CosmosBaseTendermintV1Beta1GetNodeInfo responses: '200': description: A successful response. schema: type: object properties: - block_height: - type: string - format: int64 - validators: - type: array - items: + default_node_info: + type: object + properties: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + application_version: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo + RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/syncing: + get: + summary: GetSyncing queries node syncing. + operationId: CosmosBaseTendermintV1Beta1GetSyncing + responses: + '200': + description: A successful response. + schema: + type: object + properties: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/validatorsets/latest: + get: + summary: GetLatestValidatorSet queries latest validator-set. + operationId: CosmosBaseTendermintV1Beta1GetLatestValidatorSet + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: type: object properties: address: @@ -6006,9 +8371,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -6017,8 +8383,8 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: >- - GetValidatorSetByHeightResponse is the response type for the + description: |- + GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method. default: description: An unexpected error response. @@ -6206,11 +8572,6 @@ paths: "value": "1.212s" } parameters: - - name: height - in: path - required: true - type: string - format: int64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -6269,35 +8630,508 @@ paths: type: boolean tags: - Service - /cosmos/distribution/v1beta1/community_pool: + '/cosmos/base/tendermint/v1beta1/validatorsets/{height}': get: - summary: CommunityPool queries the community pool coins. - operationId: CosmosDistributionV1Beta1CommunityPool + summary: GetValidatorSetByHeight queries validator-set at a given height. + operationId: CosmosBaseTendermintV1Beta1GetValidatorSetByHeight responses: '200': description: A successful response. schema: type: object properties: - pool: + block_height: + type: string + format: int64 + validators: type: array items: type: object properties: - denom: - type: string - amount: + address: type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: pool defines community pool's coins. + pub_key: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + in: path + required: true + type: string + format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Service + /cosmos/distribution/v1beta1/community_pool: + get: + summary: CommunityPool queries the community pool coins. + operationId: CosmosDistributionV1Beta1CommunityPool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: pool defines community pool's coins. description: >- QueryCommunityPoolResponse is the response type for the Query/CommunityPool @@ -6775,9 +9609,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -7080,9 +9915,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -7741,7 +10577,9 @@ paths: grantee is the address of the user being granted an allowance of another user's funds. allowance: - description: allowance can be any of basic and filtered fee allowance. + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. type: object properties: '@type': @@ -8038,7 +10876,7 @@ paths: allowance of another user's funds. allowance: description: >- - allowance can be any of basic and filtered fee + allowance can be any of basic, periodic, allowed fee allowance. type: object properties: @@ -8112,9 +10950,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -8376,9 +11215,8 @@ paths: - Query '/cosmos/feegrant/v1beta1/issued/{granter}': get: - summary: |- - AllowancesByGranter returns all the grants given by an address - Since v0.46 + summary: AllowancesByGranter returns all the grants given by an address + description: 'Since: cosmos-sdk 0.46' operationId: CosmosFeegrantV1Beta1AllowancesByGranter responses: '200': @@ -8403,7 +11241,7 @@ paths: allowance of another user's funds. allowance: description: >- - allowance can be any of basic and filtered fee + allowance can be any of basic, periodic, allowed fee allowance. type: object properties: @@ -8477,9 +11315,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -8491,326 +11330,326 @@ paths: description: >- QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1beta1/params/{params_type}': - get: - summary: Params queries all parameters of the gov module. - operationId: CosmosGovV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/cosmos/gov/v1/params/{params_type}': + get: + summary: Params queries all parameters of the gov module. + operationId: CosmosGovV1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + voting_params: + description: voting_params defines the parameters related to voting. + type: object + properties: + voting_period: + type: string + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a + result to be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + veto_threshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + vetoed. Default value: 1/3. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: @@ -9008,10 +11847,10 @@ paths: type: string tags: - Query - /cosmos/gov/v1beta1/proposals: + /cosmos/gov/v1/proposals: get: summary: Proposals queries all proposals based on given status. - operationId: CosmosGovV1Beta1Proposals + operationId: CosmosGovV1Proposals responses: '200': description: A successful response. @@ -9023,184 +11862,186 @@ paths: items: type: object properties: - proposal_id: + id: type: string format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain + at least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should + be in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, + for URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions + as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently + available in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods + of the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL + and the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after + the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the - regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, - with an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message - [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } status: type: string enum: @@ -9215,7 +12056,7 @@ paths: ProposalStatus enumerates the valid statuses of a proposal. - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit period. - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting @@ -9227,19 +12068,24 @@ paths: - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has failed. final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not + populated until the + + proposal's voting period has ended. type: object properties: - 'yes': + yes_count: type: string - abstain: + abstain_count: type: string - 'no': + no_count: type: string - no_with_veto: + no_with_veto_count: type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. submit_time: type: string format: date-time @@ -9270,6 +12116,11 @@ paths: voting_end_time: type: string format: date-time + metadata: + type: string + description: >- + metadata is any arbitrary metadata attached to the + proposal. description: >- Proposal defines the core field members of a governance proposal. @@ -9280,9 +12131,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -9486,7 +12338,7 @@ paths: description: |- proposal_status defines the status of the proposals. - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit period. - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting @@ -9576,10 +12428,10 @@ paths: type: boolean tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}': + '/cosmos/gov/v1/proposals/{proposal_id}': get: summary: Proposal queries proposal details based on ProposalID. - operationId: CosmosGovV1Beta1Proposal + operationId: CosmosGovV1Proposal responses: '200': description: A successful response. @@ -9589,182 +12441,186 @@ paths: proposal: type: object properties: - proposal_id: + id: type: string format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - one "/" character. The last segment of the URL's path - must represent + protocol buffer message. This string must contain at + least - the fully qualified name of the type (as in + one "/" character. The last segment of the URL's + path must represent - `path/google.protobuf.Duration`). The name should be - in a canonical form + the fully qualified name of the type (as in - (e.g., leading "." is not accepted). + `path/google.protobuf.Duration`). The name should be + in a canonical form + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they - expect it to use in the context of Any. However, for - URLs which use the + In practice, teams usually precompile into the + binary all types that they - scheme `http`, `https`, or no scheme, one can - optionally set up a type + expect it to use in the context of Any. However, for + URLs which use the - server that maps type URLs to message definitions as - follows: + scheme `http`, `https`, or no scheme, one can + optionally set up a type + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently available in - the official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available + in the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty + scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } status: type: string enum: @@ -9779,7 +12635,7 @@ paths: ProposalStatus enumerates the valid statuses of a proposal. - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit period. - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting @@ -9791,19 +12647,24 @@ paths: - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has failed. final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not populated + until the + + proposal's voting period has ended. type: object properties: - 'yes': + yes_count: type: string - abstain: + abstain_count: type: string - 'no': + no_count: type: string - no_with_veto: + no_with_veto_count: type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. submit_time: type: string format: date-time @@ -9833,6 +12694,11 @@ paths: voting_end_time: type: string format: date-time + metadata: + type: string + description: >- + metadata is any arbitrary metadata attached to the + proposal. description: >- Proposal defines the core field members of a governance proposal. @@ -10033,10 +12899,10 @@ paths: format: uint64 tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': + '/cosmos/gov/v1/proposals/{proposal_id}/deposits': get: summary: Deposits queries all deposits of a single proposal. - operationId: CosmosGovV1Beta1Deposits + operationId: CosmosGovV1Deposits responses: '200': description: A successful response. @@ -10083,9 +12949,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -10347,12 +13214,12 @@ paths: type: boolean tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': + '/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}': get: summary: >- Deposit queries single deposit information based proposalID, depositAddr. - operationId: CosmosGovV1Beta1Deposit + operationId: CosmosGovV1Deposit responses: '200': description: A successful response. @@ -10591,10 +13458,10 @@ paths: type: string tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': + '/cosmos/gov/v1/proposals/{proposal_id}/tally': get: summary: TallyResult queries the tally of a proposal vote. - operationId: CosmosGovV1Beta1TallyResult + operationId: CosmosGovV1TallyResult responses: '200': description: A successful response. @@ -10602,19 +13469,17 @@ paths: type: object properties: tally: + description: tally defines the requested tally. type: object properties: - 'yes': + yes_count: type: string - abstain: + abstain_count: type: string - 'no': + no_count: type: string - no_with_veto: + no_with_veto_count: type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. description: >- QueryTallyResultResponse is the response type for the Query/Tally RPC method. @@ -10812,10 +13677,10 @@ paths: format: uint64 tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': + '/cosmos/gov/v1/proposals/{proposal_id}/votes': get: summary: Votes queries votes of a given proposal. - operationId: CosmosGovV1Beta1Votes + operationId: CosmosGovV1Votes responses: '200': description: A successful response. @@ -10832,24 +13697,6 @@ paths: format: uint64 voter: type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field - is set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED options: type: array items: @@ -10878,10 +13725,11 @@ paths: description: >- WeightedVoteOption defines a unit of vote for vote split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + vote. description: >- Vote defines a vote on a governance proposal. @@ -10895,9 +13743,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -11159,10 +14008,10 @@ paths: type: boolean tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': + '/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}': get: summary: 'Vote queries voted information based on proposalID, voterAddr.' - operationId: CosmosGovV1Beta1Vote + operationId: CosmosGovV1Vote responses: '200': description: A successful response. @@ -11177,24 +14026,6 @@ paths: format: uint64 voter: type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is - set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED options: type: array items: @@ -11223,10 +14054,11 @@ paths: description: >- WeightedVoteOption defines a unit of vote for vote split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + vote. description: >- Vote defines a vote on a governance proposal. @@ -11428,235 +14260,84 @@ paths: type: string format: uint64 - name: voter - description: voter defines the oter address for the proposals. + description: voter defines the voter address for the proposals. in: path required: true type: string tags: - Query - /cosmos/mint/v1beta1/annual_provisions: - get: - summary: AnnualProvisions current minting annual provisions value. - operationId: CosmosMintV1Beta1AnnualProvisions - responses: - '200': - description: A successful response. - schema: - type: object - properties: - annual_provisions: - type: string - format: byte - description: >- - annual_provisions is the current minting annual provisions - value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/mint/v1beta1/inflation: - get: - summary: Inflation returns the current minting inflation value. - operationId: CosmosMintV1Beta1Inflation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: >- - QueryInflationResponse is the response type for the - Query/Inflation RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/mint/v1beta1/params: + '/cosmos/gov/v1beta1/params/{params_type}': get: - summary: Params returns the total set of minting parameters. - operationId: CosmosMintV1Beta1Params + summary: Params queries all parameters of the gov module. + operationId: CosmosGovV1Beta1Params responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. + voting_params: + description: voting_params defines the parameters related to voting. type: object properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: + voting_period: type: string - format: uint64 - title: expected blocks per year - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/params/v1beta1/params: - get: - summary: |- - Params queries a specific parameter of a module, given its subspace and - key. - operationId: CosmosParamsV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - param: - description: param defines the queried parameter. + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. type: object properties: - subspace: - type: string - key: - type: string - value: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: type: string - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: subspace - description: subspace defines the module to query the parameter for. - in: query - required: false - type: string - - name: key - description: key defines the key of the parameter in the subspace. - in: query - required: false - type: string - tags: - - Query - /cosmos/slashing/v1beta1/params: - get: - summary: Params queries the parameters of slashing module - operationId: CosmosSlashingV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. type: object properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: + quorum: type: string format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: + description: >- + Minimum percentage of total stake needed to vote for a + result to be + considered valid. + threshold: type: string format: byte - slash_fraction_downtime: + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + veto_threshold: type: string format: byte - description: >- - Params represents the parameters used for by the slashing - module. - title: >- + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + vetoed. Default value: 1/3. + description: >- QueryParamsResponse is the response type for the Query/Params RPC - method + method. default: description: An unexpected error response. schema: @@ -11674,340 +14355,456 @@ paths: properties: '@type': type: string - additionalProperties: {} - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos: - get: - summary: SigningInfos queries signing info of all validators - operationId: CosmosSlashingV1Beta1SigningInfos - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 description: >- - Index which is incremented each time the validator was a - bonded + A URL/resource name that uniquely identifies the type of + the serialized - in a block and may have signed a precommit or not. This - in conjunction with the + protocol buffer message. This string must contain at + least - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed - out of validator set). It is set + one "/" character. The last segment of the URL's path + must represent - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. + the fully qualified name of the type (as in - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their + `path/google.protobuf.Duration`). The name should be in + a canonical form - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + (e.g., leading "." is not accepted). - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - corresponding request message has used PageRequest. + In practice, teams usually precompile into the binary + all types that they - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the - Query/SigningInfos RPC + expect it to use in the context of Any. However, for + URLs which use the - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + scheme `http`, `https`, or no scheme, one can optionally + set up a type - It is less efficient than using key. Only one of offset or key - should + server that maps type URLs to message definitions as + follows: - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + * If no scheme is provided, `https` is assumed. - a count of the total number of items available for pagination in - UIs. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - count_total is only respected when offset is used. It is ignored - when key + Note: this functionality is not currently available in + the official - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': - get: - summary: SigningInfo queries the signing info of given cons address - operationId: CosmosSlashingV1Beta1SigningInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a - bonded - in a block and may have signed a precommit or not. This in - conjunction with the + Schemes other than `http`, `https` (or the empty scheme) + might be - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out - of validator set). It is set + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. + URL that describes the type of the serialized message. - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - liveness activity. - title: >- - val_signing_info is the signing info of requested val cons - address - title: >- - QuerySigningInfoResponse is the response type for the - Query/SigningInfo RPC + Protobuf library provides support to pack/unpack Any values + in the form - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: - - name: cons_address - description: cons_address is the address to query signing info of + - name: params_type + description: >- + params_type defines which parameters to query for, can be one of + "voting", + + "tallying" or "deposit". in: path required: true type: string tags: - Query - '/cosmos/staking/v1beta1/delegations/{delegator_addr}': + /cosmos/gov/v1beta1/proposals: get: - summary: >- - DelegatorDelegations queries all delegations of a given delegator - address. - operationId: CosmosStakingV1Beta1DelegatorDelegations + summary: Proposals queries all proposals based on given status. + operationId: CosmosGovV1Beta1Proposals responses: '200': description: A successful response. schema: type: object properties: - delegation_responses: + proposals: type: array items: type: object properties: - delegation: + proposal_id: + type: string + format: uint64 + content: type: object properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: + '@type': type: string description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Delegation represents the bond with tokens held by an - account. It is + `Any` contains an arbitrary serialized protocol buffer + message along with a - owned by one delegator, and is associated with the - voting power of one + URL that describes the type of the serialized message. - validator. - balance: + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: >- + ProposalStatus enumerates the valid statuses of a + proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not + populated until the + + proposal's voting period has ended. type: object properties: - denom: + 'yes': type: string - amount: + abstain: type: string - description: >- - Coin defines a token with a denomination and an amount. + 'no': + type: string + no_with_veto: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - NOTE: The amount field is an Int which implements the - custom method + NOTE: The amount field is an Int which implements the + custom method - signatures required by gogoproto. + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - delegation_responses defines all the delegations' info of a - delegator. + Proposal defines the core field members of a governance + proposal. pagination: description: pagination defines the pagination in the response. type: object @@ -12015,9 +14812,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -12026,9 +14824,11 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. + description: >- + QueryProposalsResponse is the response type for the + Query/Proposals RPC + + method. default: description: An unexpected error response. schema: @@ -12215,10 +15015,41 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: proposal_status + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + in: query + required: false + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + - name: voter + description: voter defines the voter address for the proposals. + in: query + required: false + type: string + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: query + required: false type: string - name: pagination.key description: |- @@ -12278,152 +15109,274 @@ paths: type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': + '/cosmos/gov/v1beta1/proposals/{proposal_id}': get: - summary: Redelegations queries redelegations of given address. - operationId: CosmosStakingV1Beta1Redelegations + summary: Proposal queries proposal details based on ProposalID. + operationId: CosmosGovV1Beta1Proposal responses: '200': description: A successful response. schema: type: object properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation - source operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular - delegator's redelegating bonds - - from a particular source validator to a particular - destination validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - balance: - type: string + proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + content: + type: object + properties: + '@type': + type: string description: >- - RedelegationEntryResponse is equivalent to a - RedelegationEntry except that it + A URL/resource name that uniquely identifies the type + of the serialized - contains a balance in addition to shares which is more - suitable for client + protocol buffer message. This string must contain at + least - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except - that its entries + one "/" character. The last segment of the URL's path + must represent - contain a balance in addition to shares which is more - suitable for client + the fully qualified name of the type (as in - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: >- + ProposalStatus enumerates the valid statuses of a + proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not populated + until the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + submit_time: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the - Query/Redelegations RPC - method. + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: >- + Proposal defines the core field members of a governance + proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal + RPC method. default: description: An unexpected error response. schema: @@ -12610,144 +15563,57 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: src_validator_addr - description: src_validator_addr defines the validator address to redelegate from. - in: query - required: false - type: string - - name: dst_validator_addr - description: dst_validator_addr defines the validator address to redelegate to. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': get: - summary: >- - DelegatorUnbondingDelegations queries all unbonding delegations of a - given - - delegator address. - operationId: CosmosStakingV1Beta1DelegatorUnbondingDelegations + summary: Deposits queries all deposits of a single proposal. + operationId: CosmosGovV1Beta1Deposits responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: + deposits: type: array items: type: object properties: - delegator_address: + proposal_id: type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: + format: uint64 + depositor: type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: + amount: type: array items: type: object properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: + denom: type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: + amount: type: string - description: >- - balance defines the tokens to receive at - completion. description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds + Deposit defines an amount deposited by an account address to + an active - for a single validator in an time-ordered list. + proposal. pagination: description: pagination defines the pagination in the response. type: object @@ -12755,9 +15621,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -12767,10 +15634,8 @@ paths: was set, its value is undefined otherwise description: >- - QueryUnbondingDelegatorDelegationsResponse is response type for - the - - Query/UnbondingDelegatorDelegations RPC method. + QueryDepositsResponse is the response type for the Query/Deposits + RPC method. default: description: An unexpected error response. schema: @@ -12957,11 +15822,12 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string + format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -13020,350 +15886,275 @@ paths: type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': get: - summary: |- - DelegatorValidators queries all validators info for given delegator - address. - operationId: CosmosStakingV1Beta1DelegatorValidators + summary: >- + Deposit queries single deposit information based proposalID, + depositAddr. + operationId: CosmosGovV1Beta1Deposit responses: '200': description: A successful response. schema: type: object properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: + deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: type: object properties: - '@type': + denom: type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - protocol buffer message. This string must contain at - least - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). + NOTE: The amount field is an Int which implements the + custom method + signatures required by gogoproto. + description: >- + Deposit defines an amount deposited by an account address to + an active - In practice, teams usually precompile into the - binary all types that they + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - expect it to use in the context of Any. However, for - URLs which use the + protocol buffer message. This string must contain at + least - scheme `http`, `https`, or no scheme, one can - optionally set up a type + one "/" character. The last segment of the URL's path + must represent - server that maps type URLs to message definitions as - follows: + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in + a canonical form - * If no scheme is provided, `https` is assumed. + (e.g., leading "." is not accepted). - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available - in the official + In practice, teams usually precompile into the binary + all types that they - protobuf release, and it is not used for type URLs - beginning with + expect it to use in the context of Any. However, for + URLs which use the - type.googleapis.com. + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + * If no scheme is provided, `https` is assumed. - URL that describes the type of the serialized message. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in + the official - Protobuf library provides support to pack/unpack Any - values in the form + protobuf release, and it is not used for type URLs + beginning with - of utility functions or additional generated methods of - the Any type. + type.googleapis.com. - Example 1: Pack and unpack a message in C++. + Schemes other than `http`, `https` (or the empty scheme) + might be - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 2: Pack and unpack a message in Java. + URL that describes the type of the serialized message. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Protobuf library provides support to pack/unpack Any values + in the form - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + of utility functions or additional generated methods of the + Any type. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 1: Pack and unpack a message in C++. - The pack methods provided by protobuf library will by - default use + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + Example 2: Pack and unpack a message in Java. - methods only use the fully qualified type name after the - last '/' + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + Example 3: Pack and unpack a message in Python. - name "y.z". + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - JSON + The pack methods provided by protobuf library will by + default use - ==== + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - The JSON representation of an `Any` value uses the - regular + methods only use the fully qualified type name after the + last '/' - representation of the deserialized, embedded message, - with an + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - additional field `@type` which contains the type URL. - Example: + name "y.z". - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a - custom JSON + JSON - representation, that representation will be embedded - adding a field + ==== - `value` which holds the custom JSON in addition to the - `@type` + The JSON representation of an `Any` value uses the regular - field. Example (for message - [google.protobuf.Duration][]): + representation of the deserialized, embedded message, with + an - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total - amount of the + additional field `@type` which contains the type URL. + Example: - Validator's bond shares and their exchange rate to coins. - Slashing results in + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - a decrease in the exchange rate, allowing correct - calculation of future + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - undelegations without iterating over delegators. When coins - are delegated to + If the embedded message type is well-known and has a custom + JSON - this validator, the validator is credited with a delegation - whose number of + representation, that representation will be embedded adding + a field - bond shares is based on the amount of coins delegated - divided by the current + `value` which holds the custom JSON in addition to the + `@type` - exchange rate. Voting power can be calculated as total - bonded shares + field. Example (for message [google.protobuf.Duration][]): - multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: path + required: true + type: string + tags: + - Query + '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': + get: + summary: TallyResult queries the tally of a proposal vote. + operationId: CosmosGovV1Beta1TallyResult + responses: + '200': + description: A successful response. + schema: + type: object + properties: + tally: + description: tally defines the requested tally. type: object properties: - next_key: + 'yes': type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + abstain: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. + 'no': + type: string + no_with_veto: + type: string + description: >- + QueryTallyResultResponse is the response type for the Query/Tally + RPC method. default: description: An unexpected error response. schema: @@ -13550,389 +16341,112 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': get: - summary: |- - DelegatorValidator queries validator info for given delegator validator - pair. - operationId: CosmosStakingV1Beta1DelegatorValidator + summary: Votes queries votes of a given proposal. + operationId: CosmosGovV1Beta1Votes responses: '200': description: A successful response. schema: type: object properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + option: + description: >- + Deprecated: Prefer to use `options` instead. This field + is set in queries - field. Example (for message [google.protobuf.Duration][]): + if and only if `len(options) == 1` and that option has + weight 1. In all - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: type: object properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: + option: type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: + VoteOption enumerates the valid vote options for a + given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to + WeightedVoteOption defines a unit of vote for vote + split. - this validator, the validator is credited with a delegation - whose number of - bond shares is based on the amount of coins delegated divided - by the current + Since: cosmos-sdk 0.43 + title: 'Since: cosmos-sdk 0.43' + description: >- + Vote defines a vote on a governance proposal. - exchange rate. Voting power can be calculated as total bonded - shares + A Vote consists of a proposal ID, the voter, and the vote + option. + description: votes defined the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. + was set, its value is undefined otherwise + description: >- + QueryVotesResponse is the response type for the Query/Votes RPC + method. default: description: An unexpected error response. schema: @@ -14119,425 +16633,145 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/cosmos/staking/v1beta1/historical_info/{height}': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': get: - summary: HistoricalInfo queries the historical info for given height. - operationId: CosmosStakingV1Beta1HistoricalInfo + summary: 'Vote queries voted information based on proposalID, voterAddr.' + operationId: CosmosGovV1Beta1Vote responses: '200': description: A successful response. schema: type: object properties: - hist: - description: hist defines the historical info at the given height. + vote: type: object properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, + proposal_id: + type: string + format: uint64 + voter: + type: string + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is + set in queries - including all blockchain data structures and the rules - of the application's + if and only if `len(options) == 1` and that option has + weight 1. In all - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the - validator's operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must - contain at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name - should be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message - definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup - results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type - URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a - - URL that describes the type of the serialized - message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: type: string enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature - (ex. UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height - at which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED description: >- - unbonding_time defines, if unbonding, the min time - for the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a - fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate - was changed. - min_self_delegation: + VoteOption enumerates the valid vote options for a + given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to - coins. Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When - coins are delegated to - - this validator, the validator is credited with a - delegation whose number of + WeightedVoteOption defines a unit of vote for vote + split. - bond shares is based on the amount of coins delegated - divided by the current - exchange rate. Voting power can be calculated as total - bonded shares + Since: cosmos-sdk 0.43 + title: 'Since: cosmos-sdk 0.43' + description: >- + Vote defines a vote on a governance proposal. - multiplied by exchange rate. + A Vote consists of a proposal ID, the voter, and the vote + option. description: >- - QueryHistoricalInfoResponse is response type for the - Query/HistoricalInfo RPC - + QueryVoteResponse is the response type for the Query/Vote RPC method. default: description: An unexpected error response. @@ -14725,53 +16959,70 @@ paths: "value": "1.212s" } parameters: - - name: height - description: height defines at which height to query the historical info. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: voter + description: voter defines the voter address for the proposals. in: path required: true type: string - format: int64 tags: - Query - /cosmos/staking/v1beta1/params: + '/cosmos/group/v1/group_info/{group_id}': get: - summary: Parameters queries the staking parameters. - operationId: CosmosStakingV1Beta1Params + summary: GroupInfo queries group info based on group id. + operationId: CosmosGroupV1GroupInfo responses: '200': description: A successful response. schema: type: object properties: - params: - description: params holds all the parameters of this module. + info: + description: info is the GroupInfo for the group. type: object properties: - unbonding_time: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding - delegation or redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 description: >- - historical_entries is the number of historical entries to - persist. - bond_denom: + metadata is any arbitrary metadata to attached to the + group. + version: type: string - description: bond_denom defines the bondable coin denomination. - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + + would break existing proposals. Whenever any members + weight is changed, + + or any member is added or removed this version is + incremented and will + + cause proposals based on older versions of this group to + fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: QueryGroupInfoResponse is the Query/GroupInfo response type. default: description: An unexpected error response. schema: @@ -14957,27 +17208,83 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: group_id + description: group_id is the unique ID of the group. + in: path + required: true + type: string + format: uint64 tags: - Query - /cosmos/staking/v1beta1/pool: + '/cosmos/group/v1/group_members/{group_id}': get: - summary: Pool queries the pool info. - operationId: CosmosStakingV1Beta1Pool + summary: GroupMembers queries members of a group + operationId: CosmosGroupV1GroupMembers responses: '200': description: A successful response. schema: type: object properties: - pool: - description: pool defines the pool info. + members: + type: array + items: + type: object + properties: + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. + type: object + properties: + address: + type: string + description: address is the member's account address. + weight: + type: string + description: >- + weight is the member's voting weight that should be + greater than 0. + metadata: + type: string + description: >- + metadata is any arbitrary metadata attached to the + member. + added_at: + type: string + format: date-time + description: >- + added_at is a timestamp specifying when a member was + added. + description: >- + GroupMember represents the relationship between a group and + a member. + description: members are the members of the group with given group_id. + pagination: + description: pagination defines the pagination in the response. type: object properties: - not_bonded_tokens: + next_key: type: string - bonded_tokens: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGroupMembersResponse is the Query/GroupMembersResponse + response type. default: description: An unexpected error response. schema: @@ -15163,29 +17470,110 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: group_id + description: group_id is the unique ID of the group. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/validators: + '/cosmos/group/v1/group_policies_by_admin/{admin}': get: - summary: Validators queries all validators that match the given status. - operationId: CosmosStakingV1Beta1Validators + summary: GroupsByAdmin queries group policies by admin address. + operationId: CosmosGroupV1GroupPoliciesByAdmin responses: '200': description: A successful response. schema: type: object properties: - validators: + group_policies: type: array items: type: object properties: - operator_address: + address: + type: string + description: address is the account address of group policy. + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: type: string description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: + metadata is any arbitrary metadata to attached to the + group policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's + GroupPolicyInfo structure that + + would create a different result on a running proposal. + decision_policy: type: object properties: '@type': @@ -15360,132 +17748,18 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: + created_at: type: string format: date-time description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. + created_at is a timestamp specifying when a group policy + was created. description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. + GroupPolicyInfo represents the high-level on-chain + information for a group policy. + description: >- + group_policies are the group policies info with provided + admin. pagination: description: pagination defines the pagination in the response. type: object @@ -15493,9 +17767,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -15504,9 +17779,9 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators - RPC method + description: >- + QueryGroupPoliciesByAdminResponse is the + Query/GroupPoliciesByAdmin response type. default: description: An unexpected error response. schema: @@ -15693,10 +17968,10 @@ paths: "value": "1.212s" } parameters: - - name: status - description: status enables to query for validators matching a given status. - in: query - required: false + - name: admin + description: admin is the admin address of the group policy. + in: path + required: true type: string - name: pagination.key description: |- @@ -15756,324 +18031,253 @@ paths: type: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}': + '/cosmos/group/v1/group_policies_by_group/{group_id}': get: - summary: Validator queries validator info for given validator address. - operationId: CosmosStakingV1Beta1Validator + summary: GroupPoliciesByGroup queries group policies by group id. + operationId: CosmosGroupV1GroupPoliciesByGroup responses: '200': description: A successful response. schema: type: object properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + group_policies: + type: array + items: + type: object + properties: + address: + type: string + description: address is the account address of group policy. + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + group policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's + GroupPolicyInfo structure that - protocol buffer message. This string must contain at - least + would create a different result on a running proposal. + decision_policy: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - one "/" character. The last segment of the URL's path - must represent + protocol buffer message. This string must contain at + least - the fully qualified name of the type (as in + one "/" character. The last segment of the URL's + path must represent - `path/google.protobuf.Duration`). The name should be - in a canonical form + the fully qualified name of the type (as in - (e.g., leading "." is not accepted). + `path/google.protobuf.Duration`). The name should be + in a canonical form + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they - expect it to use in the context of Any. However, for - URLs which use the + In practice, teams usually precompile into the + binary all types that they - scheme `http`, `https`, or no scheme, one can - optionally set up a type + expect it to use in the context of Any. However, for + URLs which use the - server that maps type URLs to message definitions as - follows: + scheme `http`, `https`, or no scheme, one can + optionally set up a type + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently available in - the official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available + in the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty + scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy + was created. + description: >- + GroupPolicyInfo represents the high-level on-chain + information for a group policy. + description: >- + group_policies are the group policies info associated with the + provided group. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - multiplied by exchange rate. - title: >- - QueryValidatorResponse is response type for the Query/Validator - RPC method + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByGroupResponse is the + Query/GroupPoliciesByGroup response type. default: description: An unexpected error response. schema: @@ -16260,94 +18464,293 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: group_id + description: group_id is the unique ID of the group policy's group. in: path required: true type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': + '/cosmos/group/v1/group_policy_info/{address}': get: - summary: ValidatorDelegations queries delegate info for given validator. - operationId: CosmosStakingV1Beta1ValidatorDelegations + summary: >- + GroupPolicyInfo queries group policy info based on account address of + group policy. + operationId: CosmosGroupV1GroupPolicyInfo responses: '200': description: A successful response. schema: type: object properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is + info: + type: object + properties: + address: + type: string + description: address is the account address of group policy. + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + group policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's + GroupPolicyInfo structure that - owned by one delegator, and is associated with the - voting power of one + would create a different result on a running proposal. + decision_policy: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - NOTE: The amount field is an Int which implements the - custom method + the fully qualified name of the type (as in - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a + `path/google.protobuf.Duration`). The name should be + in a canonical form - balance in addition to shares which is more suitable for - client responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + (e.g., leading "." is not accepted). - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy + was created. + description: >- + GroupPolicyInfo represents the high-level on-chain information + for a group policy. + description: >- + QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response + type. default: description: An unexpected error response. schema: @@ -16534,130 +18937,90 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: address + description: address is the account address of the group policy. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': + '/cosmos/group/v1/groups_by_admin/{admin}': get: - summary: Delegation queries delegate info for given validator delegator pair. - operationId: CosmosStakingV1Beta1Delegation + summary: GroupsByAdmin queries groups by admin address. + operationId: CosmosGroupV1GroupsByAdmin responses: '200': description: A successful response. schema: type: object properties: - delegation_response: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the voting - power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + would break existing proposals. Whenever any members + weight is changed, - NOTE: The amount field is an Int which implements the - custom method + or any member is added or removed this version is + incremented and will - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a + cause proposals based on older versions of this group to + fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: >- + GroupInfo represents the high-level on-chain information for + a group. + description: groups are the groups info with the provided admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - balance in addition to shares which is more suitable for - client responses. + was set, its value is undefined otherwise description: >- - QueryDelegationResponse is response type for the Query/Delegation - RPC method. + QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse + response type. default: description: An unexpected error response. schema: @@ -16844,82 +19207,146 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: admin + description: admin is the account address of a group's admin. in: path required: true type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': - get: - summary: |- - UnbondingDelegation queries unbonding info for given validator delegator - pair. - operationId: CosmosStakingV1Beta1UnbondingDelegation + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/cosmos/group/v1/groups_by_member/{address}': + get: + summary: GroupsByMember queries groups by member address. + operationId: CosmosGroupV1GroupsByMember responses: '200': description: A successful response. schema: type: object properties: - unbond: + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + + would break existing proposals. Whenever any members + weight is changed, + + or any member is added or removed this version is + incremented and will + + cause proposals based on older versions of this group to + fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: >- + GroupInfo represents the high-level on-chain information for + a group. + description: groups are the groups info with the provided group member. + pagination: + description: pagination defines the pagination in the response. type: object properties: - delegator_address: + next_key: type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - for a single validator in an time-ordered list. + was set, its value is undefined otherwise description: >- - QueryDelegationResponse is response type for the - Query/UnbondingDelegation - - RPC method. + QueryGroupsByMemberResponse is the Query/GroupsByMember response + type. default: description: An unexpected error response. schema: @@ -17106,104 +19533,377 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: address + description: address is the group member address. in: path required: true type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': + '/cosmos/group/v1/proposal/{proposal_id}': get: - summary: >- - ValidatorUnbondingDelegations queries unbonding delegations of a - validator. - operationId: CosmosStakingV1Beta1ValidatorUnbondingDelegations + summary: Proposal queries a proposal based on proposal id. + operationId: CosmosGroupV1Proposal responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. + proposal: + description: proposal is the proposal info. type: object properties: - next_key: + id: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + format: uint64 + description: id is the unique id of the proposal. + group_policy_address: + type: string + description: >- + group_policy_address is the account address of group + policy. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + proposal. + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submit_time: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal was + submitted. + group_version: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + group_version tracks the version of the group at proposal + submission. - was set, its value is undefined otherwise - description: >- - QueryValidatorUnbondingDelegationsResponse is response type for - the + This field is here for informational purposes only. + group_policy_version: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group + policy at proposal submission. - Query/ValidatorUnbondingDelegations RPC method. + When a decision policy is changed, existing proposals from + previous policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life + cycle of the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result contains the sums of all weighted votes + for this + + proposal for each vote option. It is empty at submission, + and only + + populated after tallying, at voting period end or at + proposal execution, + + whichever happens first. + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + voting_period_end: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting + must be done. + + Unless a successfull MsgExec is called before (to execute + a proposal whose + + tally is successful before the voting period ends), + tallying will be done + + at this point, and the `final_tally_result`and `status` + fields will be + + accordingly updated. + executor_result: + description: >- + executor_result is the final result of the proposal + execution. Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if + the proposal passes. + description: QueryProposalResponse is the Query/Proposal response type. default: description: An unexpected error response. schema: @@ -17390,150 +20090,51 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: proposal_id + description: proposal_id is the unique ID of a proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. + tags: + - Query + '/cosmos/group/v1/proposals/{proposal_id}/tally': + get: + summary: >- + TallyResult returns the tally result of a proposal. If the proposal is - count_total is only respected when offset is used. It is ignored - when key + still in voting period, then this query computes the current tally + state, - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + which might not be final. On the other hand, if the proposal is final, + then it simply returns the `final_tally_result` state stored in the - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/tx/v1beta1/simulate: - post: - summary: Simulate simulates executing a transaction for estimating gas usage. - operationId: CosmosTxV1Beta1Simulate + proposal itself. + operationId: CosmosGroupV1TallyResult responses: '200': description: A successful response. schema: type: object properties: - gas_info: - description: gas_info is the information about gas used in the simulation. + tally: + description: tally defines the requested tally. type: object properties: - gas_wanted: + yes_count: type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: + description: yes_count is the weighted sum of yes votes. + abstain_count: type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: + description: abstain_count is the weighted sum of abstainers. + no_count: type: string - format: byte - description: >- - Data is any data returned from message or handler - execution. It MUST be - - length prefixed in order to separate data from multiple - message executions. - log: + description: no_count is the weighted sum of no votes. + no_with_veto_count: type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted - during message - - or handler execution. - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. + description: no_with_veto_count is the weighted sum of veto. + description: QueryTallyResultResponse is the Query/TallyResult response type. default: description: An unexpected error response. schema: @@ -17720,25 +20321,358 @@ paths: "value": "1.212s" } parameters: - - name: body - description: |- - SimulateRequest is the request type for the Service.Simulate - RPC method. - in: body + - name: proposal_id + description: proposal_id is the unique id of a proposal. + in: path required: true - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' + type: string + format: uint64 tags: - - Service - /cosmos/tx/v1beta1/txs: + - Query + '/cosmos/group/v1/proposals_by_group_policy/{address}': get: - summary: GetTxsEvent fetches txs by event. - operationId: CosmosTxV1Beta1GetTxsEvent + summary: >- + ProposalsByGroupPolicy queries proposals based on account address of + group policy. + operationId: CosmosGroupV1ProposalsByGroupPolicy responses: '200': description: A successful response. schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' + type: object + properties: + proposals: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique id of the proposal. + group_policy_address: + type: string + description: >- + group_policy_address is the account address of group + policy. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + proposal. + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submit_time: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal + was submitted. + group_version: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at + proposal submission. + + This field is here for informational purposes only. + group_policy_version: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group + policy at proposal submission. + + When a decision policy is changed, existing proposals + from previous policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life + cycle of the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result contains the sums of all weighted + votes for this + + proposal for each vote option. It is empty at + submission, and only + + populated after tallying, at voting period end or at + proposal execution, + + whichever happens first. + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + voting_period_end: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting + must be done. + + Unless a successfull MsgExec is called before (to + execute a proposal whose + + tally is successful before the voting period ends), + tallying will be done + + at this point, and the `final_tally_result`and `status` + fields will be + + accordingly updated. + executor_result: + description: >- + executor_result is the final result of the proposal + execution. Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain + at least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should + be in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, + for URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions + as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently + available in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods + of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL + and the unpack + + methods only use the fully qualified type name after + the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed + if the proposal passes. + description: >- + Proposal defines a group proposal. Any member of a group can + submit a proposal + + for a group policy to decide upon. + + A proposal consists of a set of `sdk.Msg`s that will be + executed if the proposal + + passes as well as some optional metadata associated with the + proposal. + description: proposals are the proposals with given group policy. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryProposalsByGroupPolicyResponse is the + Query/ProposalByGroupPolicy response type. default: description: An unexpected error response. schema: @@ -17925,14 +20859,13 @@ paths: "value": "1.212s" } parameters: - - name: events - description: events is the list of transaction event type. - in: query - required: false - type: array - items: - type: string - collectionFormat: multi + - name: address + description: >- + address is the account address of the group policy related to + proposals. + in: path + required: true + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -17989,439 +20922,137 @@ paths: in: query required: false type: boolean - - name: order_by - description: |2- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - in: query - required: false - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED tags: - - Service - post: - summary: BroadcastTx broadcast transaction. - operationId: CosmosTxV1Beta1BroadcastTx + - Query + '/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}': + get: + summary: VoteByProposalVoter queries a vote by proposal id and voter. + operationId: CosmosGroupV1VoteByProposalVoter responses: '200': description: A successful response. schema: type: object properties: - tx_response: + vote: + description: vote is the vote with given proposal_id and voter. type: object properties: - height: - type: string - format: int64 - title: The block height - txhash: + proposal_id: type: string - description: The transaction hash. - codespace: + format: uint64 + description: proposal is the unique ID of the proposal. + voter: type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. type: string - description: 'Result bytes, if any.' - raw_log: + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: type: string description: >- - The output of the application's logger (raw string). May - be + metadata is any arbitrary metadata to attached to the + vote. + submit_time: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + description: >- + QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter + response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where - the key and value are + protocol buffer message. This string must contain at + least - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where - all the attributes + one "/" character. The last segment of the URL's path + must represent - contain key/value pairs that are strings instead - of raw bytes. - description: >- - Events contains a slice of Event objects that were - emitted during some + the fully qualified name of the type (as in - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed - tx ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + `path/google.protobuf.Duration`). The name should be in + a canonical form - protocol buffer message. This string must contain at - least + (e.g., leading "." is not accepted). - one "/" character. The last segment of the URL's path - must represent - the fully qualified name of the type (as in + In practice, teams usually precompile into the binary + all types that they - `path/google.protobuf.Duration`). The name should be - in a canonical form + expect it to use in the context of Any. However, for + URLs which use the - (e.g., leading "." is not accepted). + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - In practice, teams usually precompile into the binary - all types that they - expect it to use in the context of Any. However, for - URLs which use the + * If no scheme is provided, `https` is assumed. - scheme `http`, `https`, or no scheme, one can - optionally set up a type + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - server that maps type URLs to message definitions as - follows: + Note: this functionality is not currently available in + the official + protobuf release, and it is not used for type URLs + beginning with - * If no scheme is provided, `https` is assumed. + type.googleapis.com. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in - the official + Schemes other than `http`, `https` (or the empty scheme) + might be - protobuf release, and it is not used for type URLs - beginning with + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - type.googleapis.com. + URL that describes the type of the serialized message. - Schemes other than `http`, `https` (or the empty - scheme) might be + Protobuf library provides support to pack/unpack Any values + in the form - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the - weighted median of - - the timestamps of the valid votes in the block.LastCommit. - For height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante handler. Whereas Logs contains the - events, with - - additional metadata, emitted only by processing the - messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of the + Any type. Example 1: Pack and unpack a message in C++. @@ -18522,57 +21153,86 @@ paths: "value": "1.212s" } parameters: - - name: body - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. - in: body + - name: proposal_id + description: proposal_id is the unique ID of a proposal. + in: path required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the - TxService.Broadcast RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. + type: string + format: uint64 + - name: voter + description: voter is a proposal voter account address. + in: path + required: true + type: string tags: - - Service - '/cosmos/tx/v1beta1/txs/block/{height}': + - Query + '/cosmos/group/v1/votes_by_proposal/{proposal_id}': get: - summary: GetBlockWithTxs fetches a block with decoded txs. - description: 'Since: cosmos-sdk 0.45.2' - operationId: CosmosTxV1Beta1GetBlockWithTxs + summary: VotesByProposal queries a vote by proposal. + operationId: CosmosGroupV1VotesByProposal responses: '200': description: A successful response. schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + vote. + submit_time: + type: string + format: date-time + description: >- + submit_time is the timestamp when the vote was + submitted. + description: Vote represents a vote for a proposal. + description: votes are the list of votes for given proposal_id. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryVotesByProposalResponse is the Query/VotesByProposal response + type. default: description: An unexpected error response. schema: @@ -18759,12 +21419,12 @@ paths: "value": "1.212s" } parameters: - - name: height - description: height is the height of the block to query. + - name: proposal_id + description: proposal_id is the unique ID of a proposal. in: path required: true type: string - format: int64 + format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -18822,16 +21482,72 @@ paths: required: false type: boolean tags: - - Service - '/cosmos/tx/v1beta1/txs/{hash}': + - Query + '/cosmos/group/v1/votes_by_voter/{voter}': get: - summary: GetTx fetches a tx by hash. - operationId: CosmosTxV1Beta1GetTx + summary: VotesByVoter queries a vote by voter. + operationId: CosmosGroupV1VotesByVoter responses: '200': description: A successful response. schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the + vote. + submit_time: + type: string + format: date-time + description: >- + submit_time is the timestamp when the vote was + submitted. + description: Vote represents a vote for a proposal. + description: votes are the list of votes by given voter. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. default: description: An unexpected error response. schema: @@ -19018,32 +21734,88 @@ paths: "value": "1.212s" } parameters: - - name: hash - description: 'hash is the tx hash to query, encoded as a hex string.' + - name: voter + description: voter is a proposal voter account address. in: path required: true type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - - Service - '/cosmos/upgrade/v1beta1/applied_plan/{name}': + - Query + /cosmos/mint/v1beta1/annual_provisions: get: - summary: AppliedPlan queries a previously applied upgrade plan by its name. - operationId: CosmosUpgradeV1Beta1AppliedPlan + summary: AnnualProvisions current minting annual provisions value. + operationId: CosmosMintV1Beta1AnnualProvisions responses: '200': description: A successful response. schema: type: object properties: - height: + annual_provisions: type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the - Query/AppliedPlan RPC - - method. + format: byte + description: >- + annual_provisions is the current minting annual provisions + value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. default: description: An unexpected error response. schema: @@ -19061,26 +21833,159 @@ paths: properties: '@type': type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they + additionalProperties: {} + tags: + - Query + /cosmos/mint/v1beta1/inflation: + get: + summary: Inflation returns the current minting inflation value. + operationId: CosmosMintV1Beta1Inflation + responses: + '200': + description: A successful response. + schema: + type: object + properties: + inflation: + type: string + format: byte + description: inflation is the current minting inflation value. + description: >- + QueryInflationResponse is the response type for the + Query/Inflation RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/mint/v1beta1/params: + get: + summary: Params returns the total set of minting parameters. + operationId: CosmosMintV1Beta1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + '/cosmos/nft/v1beta1/balance/{owner}/{class_id}': + get: + summary: >- + Balance queries the number of NFTs of a given class owned by the owner, + same as balanceOf in ERC721 + operationId: CosmosNftV1Beta1Balance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: + type: string + format: uint64 + title: >- + QueryBalanceResponse is the response type for the Query/Balance + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they expect it to use in the context of Any. However, for URLs which use the @@ -19230,251 +22135,273 @@ paths: "value": "1.212s" } parameters: - - name: name - description: name is the name of the applied plan to query for. + - name: owner + in: path + required: true + type: string + - name: class_id in: path required: true type: string tags: - Query - /cosmos/upgrade/v1beta1/current_plan: + /cosmos/nft/v1beta1/classes: get: - summary: CurrentPlan queries the current upgrade plan. - operationId: CosmosUpgradeV1Beta1CurrentPlan + summary: Classes queries all NFT classes + operationId: CosmosNftV1Beta1Classes responses: '200': description: A successful response. schema: type: object properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by - the upgraded - - version of the software to apply any special "on-upgrade" - commands during - - the first BeginBlock method after the upgrade is applied. - It is also used - - to detect whether a software version can handle a given - upgrade. If no - - upgrade handler with this name has been set in the - software, it will be - - assumed that the software is out-of-date when the upgrade - Time or Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time - based upgrade logic - - has been removed from the SDK. - - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included - on-chain - - such as a git commit that validators could automatically - upgrade to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + classes: + type: array + items: + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT + classification, similar to the contract address of + ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT + classification. Optional + symbol: + type: string + title: >- + symbol is an abbreviated name for nft classification. + Optional + description: + type: string + title: >- + description is a brief description of nft + classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can + define schema for Class and NFT `Data` attributes. + Optional + uri_hash: + type: string + title: >- + uri_hash is a hash of the document pointed by uri. + Optional + data: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryCurrentPlanResponse is the response type for the - Query/CurrentPlan RPC + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + data is the app specific metadata of the NFT class. + Optional + description: Class defines the class of the nft type. + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - method. + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryClassesResponse is the response type for the Query/Classes + RPC method default: description: An unexpected error response. schema: @@ -19660,272 +22587,288 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - tags: - - Query - /cosmos/upgrade/v1beta1/module_versions: - get: - summary: ModuleVersions queries the list of module versions from state. - description: 'Since: cosmos-sdk 0.43' - operationId: CosmosUpgradeV1Beta1ModuleVersions - responses: - '200': - description: A successful response. - schema: - type: object - properties: - module_versions: - type: array - items: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - Since: cosmos-sdk 0.43 - description: >- - module_versions is a list of module names with their consensus - versions. - description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions + It is less efficient than using key. Only one of offset or key + should - RPC method. + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + a count of the total number of items available for pagination in + UIs. - Since: cosmos-sdk 0.43 - default: - description: An unexpected error response. + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/cosmos/nft/v1beta1/classes/{class_id}': + get: + summary: Class queries an NFT class based on its id + operationId: CosmosNftV1Beta1Class + responses: + '200': + description: A successful response. schema: type: object properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + class: + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT + classification, similar to the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT + classification. Optional + symbol: + type: string + title: >- + symbol is an abbreviated name for nft classification. + Optional + description: + type: string + title: >- + description is a brief description of nft classification. + Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define + schema for Class and NFT `Data` attributes. Optional + uri_hash: + type: string + title: >- + uri_hash is a hash of the document pointed by uri. + Optional + data: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - JSON + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - ==== + methods only use the fully qualified type name after the + last '/' - The JSON representation of an `Any` value uses the regular + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - representation of the deserialized, embedded message, with - an + name "y.z". - additional field `@type` which contains the type URL. - Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + JSON - If the embedded message type is well-known and has a custom - JSON + ==== - representation, that representation will be embedded adding - a field + The JSON representation of an `Any` value uses the regular - `value` which holds the custom JSON in addition to the - `@type` + representation of the deserialized, embedded message, with + an - field. Example (for message [google.protobuf.Duration][]): + additional field `@type` which contains the type URL. + Example: - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: module_name - description: |- - module_name is a field to query a specific module - consensus version from state. Leaving this empty will - fetch the full list of module versions from state - in: query - required: false - type: string - tags: - - Query - '/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}': - get: - summary: >- - UpgradedConsensusState queries the consensus state that will serve + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - as a trusted kernel for the next version of this chain. It will only be + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - stored at the last height of this chain. + If the embedded message type is well-known and has a + custom JSON - UpgradedConsensusState RPC not supported with legacy querier + representation, that representation will be embedded + adding a field - This rpc is deprecated now that IBC has its own replacement + `value` which holds the custom JSON in addition to the + `@type` - (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) - operationId: CosmosUpgradeV1Beta1UpgradedConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_consensus_state: - type: string - format: byte - title: 'Since: cosmos-sdk 0.43' - description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState + field. Example (for message [google.protobuf.Duration][]): - RPC method. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + data is the app specific metadata of the NFT class. + Optional + description: Class defines the class of the nft type. + title: >- + QueryClassResponse is the response type for the Query/Class RPC + method default: description: An unexpected error response. schema: @@ -20112,153 +23055,324 @@ paths: "value": "1.212s" } parameters: - - name: last_height - description: |- - last height of the current chain must be sent in request - as this is the height under which next consensus state is stored + - name: class_id in: path required: true type: string - format: int64 tags: - Query - /cosmwasm/wasm/v1/code: + /cosmos/nft/v1beta1/nfts: get: - summary: Codes gets the metadata for all stored wasm codes - operationId: CosmwasmWasmV1Codes + summary: >- + NFTs queries all NFTs of a given class or owner,choose at least one of + the two, similar to tokenByIndex in + + ERC721Enumerable + operationId: CosmosNftV1Beta1NFTs responses: '200': description: A successful response. schema: type: object properties: - code_infos: + nfts: type: array items: type: object properties: - code_id: + class_id: type: string - format: uint64 - creator: + title: >- + class_id associated with the NFT, similar to the + contract address of ERC721 + id: type: string - data_hash: + title: id is a unique identifier of the NFT + uri: type: string - format: byte - instantiate_permission: + title: uri for the NFT metadata stored off chain + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: type: object properties: - permission: + '@type': type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified - placeholder for empty value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - title: CodeInfoResponse contains code meta data from CodeInfo - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + A URL/resource name that uniquely identifies the + type of the serialized - was set, its value is undefined otherwise - title: >- - QueryCodesResponse is the response type for the Query/Codes RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + protocol buffer message. This string must contain at + least - protocol buffer message. This string must contain at - least + one "/" character. The last segment of the URL's + path must represent - one "/" character. The last segment of the URL's path - must represent + the fully qualified name of the type (as in - the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be + in a canonical form - `path/google.protobuf.Duration`). The name should be in - a canonical form + (e.g., leading "." is not accepted). - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the + binary all types that they - In practice, teams usually precompile into the binary - all types that they + expect it to use in the context of Any. However, for + URLs which use the - expect it to use in the context of Any. However, for - URLs which use the + scheme `http`, `https`, or no scheme, one can + optionally set up a type - scheme `http`, `https`, or no scheme, one can optionally - set up a type + server that maps type URLs to message definitions as + follows: - server that maps type URLs to message definitions as - follows: + * If no scheme is provided, `https` is assumed. - * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Note: this functionality is not currently available + in the official - Note: this functionality is not currently available in - the official + protobuf release, and it is not used for type URLs + beginning with - protobuf release, and it is not used for type URLs - beginning with + type.googleapis.com. - type.googleapis.com. + Schemes other than `http`, `https` (or the empty + scheme) might be - Schemes other than `http`, `https` (or the empty scheme) - might be + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is an app specific data of the NFT. Optional + description: NFT defines the NFT. + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryNFTsResponse is the response type for the Query/NFTs RPC + methods + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be used with implementation specific semantics. additionalProperties: {} @@ -20374,6 +23488,14 @@ paths: "value": "1.212s" } parameters: + - name: class_id + in: query + required: false + type: string + - name: owner + in: query + required: false + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -20432,55 +23554,209 @@ paths: type: boolean tags: - Query - '/cosmwasm/wasm/v1/code/{code_id}': + '/cosmos/nft/v1beta1/nfts/{class_id}/{id}': get: - summary: Code gets the binary code and metadata for a singe wasm code - operationId: CosmwasmWasmV1Code + summary: NFT queries an NFT based on its class and id. + operationId: CosmosNftV1Beta1NFT responses: '200': description: A successful response. schema: type: object properties: - code_info: + nft: type: object properties: - code_id: + class_id: type: string - format: uint64 - creator: + title: >- + class_id associated with the NFT, similar to the contract + address of ERC721 + id: type: string - data_hash: + title: id is a unique identifier of the NFT + uri: type: string - format: byte - instantiate_permission: + title: uri for the NFT metadata stored off chain + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: type: object properties: - permission: + '@type': type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified - placeholder for empty value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - title: CodeInfoResponse contains code meta data from CodeInfo - data: - type: string - format: byte - title: >- - QueryCodeResponse is the response type for the Query/Code RPC - method + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is an app specific data of the NFT. Optional + description: NFT defines the NFT. + title: QueryNFTResponse is the response type for the Query/NFT RPC method default: description: An unexpected error response. schema: @@ -20667,49 +23943,33 @@ paths: "value": "1.212s" } parameters: - - name: code_id + - name: class_id + in: path + required: true + type: string + - name: id in: path required: true type: string - format: uint64 tags: - Query - '/cosmwasm/wasm/v1/code/{code_id}/contracts': + '/cosmos/nft/v1beta1/owner/{class_id}/{id}': get: - summary: ContractsByCode lists all smart contracts for a code id - operationId: CosmwasmWasmV1ContractsByCode + summary: >- + Owner queries the owner of the NFT based on its class and id, same as + ownerOf in ERC721 + operationId: CosmosNftV1Beta1Owner responses: '200': description: A successful response. schema: type: object properties: - contracts: - type: array - items: - type: string - title: contracts are a set of contract addresses - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryContractsByCodeResponse is the response type for the - Query/ContractsByCode RPC method + owner: + type: string + title: >- + QueryOwnerResponse is the response type for the Query/Owner RPC + method default: description: An unexpected error response. schema: @@ -20896,105 +24156,34 @@ paths: "value": "1.212s" } parameters: - - name: code_id + - name: class_id in: path required: true type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: id + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmwasm/wasm/v1/codes/pinned: + '/cosmos/nft/v1beta1/supply/{class_id}': get: - summary: PinnedCodes gets the pinned code ids - operationId: CosmwasmWasmV1PinnedCodes + summary: >- + Supply queries the number of NFTs from the given class, same as + totalSupply of ERC721. + operationId: CosmosNftV1Beta1Supply responses: '200': description: A successful response. schema: type: object properties: - code_ids: - type: array - items: - type: string - format: uint64 - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryPinnedCodesResponse is the response type for the - Query/PinnedCodes RPC method + amount: + type: string + format: uint64 + title: >- + QuerySupplyResponse is the response type for the Query/Supply RPC + method default: description: An unexpected error response. schema: @@ -21180,6 +24369,296 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: class_id + in: path + required: true + type: string + tags: + - Query + /cosmos/params/v1beta1/params: + get: + summary: |- + Params queries a specific parameter of a module, given its subspace and + key. + operationId: CosmosParamsV1Beta1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + param: + description: param defines the queried parameter. + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: >- + QueryParamsResponse is response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: subspace + description: subspace defines the module to query the parameter for. + in: query + required: false + type: string + - name: key + description: key defines the key of the parameter in the subspace. + in: query + required: false + type: string + tags: + - Query + /cosmos/params/v1beta1/subspaces: + get: + summary: >- + Subspaces queries for all registered subspaces and all keys for a + subspace. + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosParamsV1Beta1Subspaces + responses: + '200': + description: A successful response. + schema: + type: object + properties: + subspaces: + type: array + items: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: >- + Subspace defines a parameter subspace name and all the keys + that exist for + + the subspace. + + + Since: cosmos-sdk 0.46 + description: >- + QuerySubspacesResponse defines the response types for querying for + all + + registered subspaces and all keys for a subspace. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/slashing/v1beta1/params: + get: + summary: Params queries the parameters of slashing module + operationId: CosmosSlashingV1Beta1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: >- + Params represents the parameters used for by the slashing + module. + title: >- + QueryParamsResponse is the response type for the Query/Params RPC + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos: + get: + summary: SigningInfos queries signing info of all validators + operationId: CosmosSlashingV1Beta1SigningInfos + responses: + '200': + description: A successful response. + schema: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + unjailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented each time the validator was a + bonded + + in a block and may have signed a precommit or not. This + in conjunction with the + + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed + out of validator set). It is set + + once the validator commits an equivocation or for any + other configured misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. + + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the + Query/SigningInfos RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -21239,243 +24718,72 @@ paths: type: boolean tags: - Query - '/cosmwasm/wasm/v1/contract/{address}': + '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': get: - summary: ContractInfo gets the contract meta data - operationId: CosmwasmWasmV1ContractInfo + summary: SigningInfo queries the signing info of given cons address + operationId: CosmosSlashingV1Beta1SigningInfo responses: '200': description: A successful response. schema: type: object properties: - address: - type: string - title: address is the address of the contract - contract_info: + val_signing_info: type: object properties: - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored Wasm code - creator: + address: type: string - title: Creator address who initially instantiated the contract - admin: + start_height: type: string - title: Admin is an optional address that can execute migrations - label: + format: int64 + title: >- + Height at which validator was first a candidate OR was + unjailed + index_offset: type: string + format: int64 description: >- - Label is optional metadata to be stored with a contract - instance. - created: - title: >- - Created Tx position when the contract was instantiated. - - This data should kept internal and not be exposed via - query results. Just + Index which is incremented each time the validator was a + bonded - use for sorting - type: object - properties: - block_height: - type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: - type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block - (actual transaction index, + in a block and may have signed a precommit or not. This in + conjunction with the - or gas consumed) + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean description: >- - AbsoluteTxPosition is a unique transaction position that - allows for global + Whether or not a validator has been tombstoned (killed out + of validator set). It is set - ordering of transactions. - ibc_port_id: + once the validator commits an equivocation or for any + other configured misbehiavor. + missed_blocks_counter: type: string - extension: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} + format: int64 description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` + A counter kept to avoid unnecessary array reads. - field. Example (for message [google.protobuf.Duration][]): + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: ContractInfo stores a WASM contract instance + liveness activity. + title: >- + val_signing_info is the signing info of requested val cons + address title: >- - QueryContractInfoResponse is the response type for the - Query/ContractInfo RPC + QuerySigningInfoResponse is the response type for the + Query/SigningInfo RPC method default: @@ -21495,19 +24803,132 @@ paths: properties: '@type': type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in + additionalProperties: {} + parameters: + - name: cons_address + description: cons_address is the address to query signing info of + in: path + required: true + type: string + tags: + - Query + '/cosmos/staking/v1beta1/delegations/{delegator_addr}': + get: + summary: >- + DelegatorDelegations queries all delegations of a given delegator + address. + operationId: CosmosStakingV1Beta1DelegatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of + the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + delegation_responses defines all the delegations' info of a + delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted). @@ -21664,70 +25085,192 @@ paths: "value": "1.212s" } parameters: - - name: address - description: address is the address of the contract to query + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/cosmwasm/wasm/v1/contract/{address}/history': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': get: - summary: ContractHistory gets the contract code history - operationId: CosmwasmWasmV1ContractHistory + summary: Redelegations queries redelegations of given address. + operationId: CosmosStakingV1Beta1Redelegations responses: '200': description: A successful response. schema: type: object properties: - entries: + redelegation_responses: type: array items: type: object properties: - operation: - type: string - enum: - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS - default: CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - description: >- - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED: - ContractCodeHistoryOperationTypeUnspecified placeholder - for empty value - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT: ContractCodeHistoryOperationTypeInit on chain contract instantiation - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE: ContractCodeHistoryOperationTypeMigrate code migration - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS: ContractCodeHistoryOperationTypeGenesis based on genesis data - title: >- - ContractCodeHistoryOperationType actions that caused a - code change - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored WASM code - updated: - description: Updated Tx position when the operation was executed. + redelegation: type: object properties: - block_height: + delegator_address: type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_src_address: type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block - (actual transaction index, + description: >- + validator_src_address is the validator redelegation + source operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular + delegator's redelegating bonds - or gas consumed) - msg: - type: string - format: byte - description: ContractCodeHistoryEntry metadata to a contract. + from a particular source validator to a particular + destination validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a + RedelegationEntry except that it + + contains a balance in addition to shares which is more + suitable for client + + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except + that its entries + + contain a balance in addition to shares which is more + suitable for client + + responses. pagination: description: pagination defines the pagination in the response. type: object @@ -21735,9 +25278,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -21746,9 +25290,11 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: |- - QueryContractHistoryResponse is the response type for the - Query/ContractHistory RPC method + description: >- + QueryRedelegationsResponse is response type for the + Query/Redelegations RPC + + method. default: description: An unexpected error response. schema: @@ -21935,11 +25481,21 @@ paths: "value": "1.212s" } parameters: - - name: address - description: address is the address of the contract to query + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string + - name: src_validator_addr + description: src_validator_addr defines the validator address to redelegate from. + in: query + required: false + type: string + - name: dst_validator_addr + description: dst_validator_addr defines the validator address to redelegate to. + in: query + required: false + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -21998,23 +25554,95 @@ paths: type: boolean tags: - Query - '/cosmwasm/wasm/v1/contract/{address}/raw/{query_data}': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': get: - summary: RawContractState gets single key from the raw store data of a contract - operationId: CosmwasmWasmV1RawContractState + summary: >- + DelegatorUnbondingDelegations queries all unbonding delegations of a + given + + delegator address. + operationId: CosmosStakingV1Beta1DelegatorUnbondingDelegations responses: '200': description: A successful response. schema: type: object properties: - data: - type: string - format: byte - title: Data contains the raw store data - title: |- - QueryRawContractStateResponse is the response type for the - Query/RawContractState RPC method + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryUnbondingDelegatorDelegationsResponse is response type for + the + + Query/UnbondingDelegatorDelegations RPC method. default: description: An unexpected error response. schema: @@ -22201,258 +25829,395 @@ paths: "value": "1.212s" } parameters: - - name: address - description: address is the address of the contract + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string - - name: query_data - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/cosmwasm/wasm/v1/contract/{address}/smart/{query_data}': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': get: - summary: SmartContractState get smart query result from the contract - operationId: CosmwasmWasmV1SmartContractState + summary: |- + DelegatorValidators queries all validators info for given delegator + address. + operationId: CosmosStakingV1Beta1DelegatorValidators responses: '200': description: A successful response. schema: type: object properties: - data: - type: string - format: byte - title: Data contains the json data returned from the smart contract - title: |- - QuerySmartContractStateResponse is the response type for the - Query/SmartContractState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: + validators: type: array items: type: object properties: - '@type': + operator_address: type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the address of the contract - in: path - required: true - type: string - - name: query_data - description: QueryData contains the query data passed to the contract - in: path - required: true - type: string - format: byte - tags: - - Query - '/cosmwasm/wasm/v1/contract/{address}/state': - get: - summary: AllContractState gets all raw store data for a single contract - operationId: CosmwasmWasmV1AllContractState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - models: - type: array - items: - type: object - properties: - key: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). type: string - format: byte - title: hex-encode key to read it better (this is often ascii) - value: + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: byte - title: base64-encode raw value - title: Model is a struct that holds a KV pair + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators defines the validators' info of a delegator. pagination: description: pagination defines the pagination in the response. type: object @@ -22460,9 +26225,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -22471,9 +26237,9 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: |- - QueryAllContractStateResponse is the response type for the - Query/AllContractState RPC method + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. default: description: An unexpected error response. schema: @@ -22660,8 +26426,8 @@ paths: "value": "1.212s" } parameters: - - name: address - description: address is the address of the contract + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string @@ -22723,329 +26489,329 @@ paths: type: boolean tags: - Query - /ibc/apps/interchain_accounts/controller/v1/params: - get: - summary: Params queries all parameters of the ICA controller submodule. - operationId: IbcApplicationsInterchainAccountsControllerV1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - controller_enabled: - type: boolean - description: >- - controller_enabled enables or disables the controller - submodule. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /ibc/apps/interchain_accounts/host/v1/params: + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': get: - summary: Params queries all parameters of the ICA host submodule. - operationId: IbcApplicationsInterchainAccountsHostV1Params + summary: |- + DelegatorValidator queries validator info for given delegator validator + pair. + operationId: CosmosStakingV1Beta1DelegatorValidator responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. + validator: type: object properties: - host_enabled: - type: boolean - description: host_enabled enables or disables the host submodule. - allow_messages: - type: array - items: - type: string + operator_address: + type: string description: >- - allow_messages defines a list of sdk message typeURLs - allowed to be executed on a host chain. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address': - get: - summary: >- - EscrowAddress returns the escrow address for a particular port and - channel id. - operationId: IbcApplicationsTransferV1EscrowAddress - responses: - '200': - description: A successful response. - schema: - type: object - properties: - escrow_address: - type: string - title: the escrow account address - description: >- - QueryEscrowAddressResponse is the response type of the - EscrowAddress RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: unique channel identifier - in: path - required: true - type: string - - name: port_id - description: unique port identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/apps/transfer/v1/denom_hashes/{trace}': - get: - summary: DenomHash queries a denomination hash information. - operationId: IbcApplicationsTransferV1DenomHash - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hash: - type: string - description: hash (in hex format) of the denomination trace information. - description: >- - QueryDenomHashResponse is the response type for the - Query/DenomHash RPC + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. - method. + + Since: cosmos-sdk 0.46 + description: >- + Validator defines a validator, together with the total amount + of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation + of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided + by the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. default: description: An unexpected error response. schema: @@ -23232,332 +26998,427 @@ paths: "value": "1.212s" } parameters: - - name: trace - description: 'The denomination trace ([port_id]/[channel_id])+/[denom]' + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string tags: - Query - /ibc/apps/transfer/v1/denom_traces: + '/cosmos/staking/v1beta1/historical_info/{height}': get: - summary: DenomTraces queries all denomination traces. - operationId: IbcApplicationsTransferV1DenomTraces + summary: HistoricalInfo queries the historical info for given height. + operationId: CosmosStakingV1Beta1HistoricalInfo responses: '200': description: A successful response. schema: type: object properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the - - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. + hist: + description: hist defines the historical info at the given height. type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the - Query/DenomTraces RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - Note: this functionality is not currently available in - the official + including all blockchain data structures and the rules + of the application's - protobuf release, and it is not used for type URLs - beginning with + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the + validator's operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - type.googleapis.com. + protocol buffer message. This string must + contain at least + one "/" character. The last segment of the URL's + path must represent - Schemes other than `http`, `https` (or the empty scheme) - might be + the fully qualified name of the type (as in - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + `path/google.protobuf.Duration`). The name + should be in a canonical form - URL that describes the type of the serialized message. + (e.g., leading "." is not accepted). - Protobuf library provides support to pack/unpack Any values - in the form + In practice, teams usually precompile into the + binary all types that they - of utility functions or additional generated methods of the - Any type. + expect it to use in the context of Any. However, + for URLs which use the + scheme `http`, `https`, or no scheme, one can + optionally set up a type - Example 1: Pack and unpack a message in C++. + server that maps type URLs to message + definitions as follows: - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + * If no scheme is provided, `https` is assumed. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup + results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Example 3: Pack and unpack a message in Python. + Note: this functionality is not currently + available in the official - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + protobuf release, and it is not used for type + URLs beginning with - Example 4: Pack and unpack a message in Go + type.googleapis.com. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by - default use + Schemes other than `http`, `https` (or the empty + scheme) might be - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol + buffer message along with a - methods only use the fully qualified type name after the - last '/' + URL that describes the type of the serialized + message. - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - name "y.z". + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods + of the Any type. - JSON + Example 1: Pack and unpack a message in C++. - ==== + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - The JSON representation of an `Any` value uses the regular + Example 2: Pack and unpack a message in Java. - representation of the deserialized, embedded message, with - an + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - additional field `@type` which contains the type URL. - Example: + Example 3: Pack and unpack a message in Python. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Example 4: Pack and unpack a message in Go - If the embedded message type is well-known and has a custom - JSON + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - representation, that representation will be embedded adding - a field + The pack methods provided by protobuf library will + by default use - `value` which holds the custom JSON in addition to the - `@type` + 'type.googleapis.com/full.type.name' as the type URL + and the unpack - field. Example (for message [google.protobuf.Duration][]): + methods only use the fully qualified type name after + the last '/' - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + in the type URL, for example "foo.bar.com/x/y.z" + will yield type - It is less efficient than using key. Only one of offset or key - should + name "y.z". - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - a count of the total number of items available for pagination in - UIs. + JSON - count_total is only respected when offset is used. It is ignored - when key + ==== - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc/apps/transfer/v1/denom_traces/{hash}': - get: - summary: DenomTrace queries a denomination trace information. - operationId: IbcApplicationsTransferV1DenomTrace - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_trace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the + The JSON representation of an `Any` value uses the + regular - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the + representation of the deserialized, embedded + message, with an - source tracing information path. + additional field `@type` which contains the type + URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to + the `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature + (ex. UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height + at which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time + for the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a + fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate + was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to + coins. Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When + coins are delegated to + + this validator, the validator is credited with a + delegation whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. description: >- - QueryDenomTraceResponse is the response type for the - Query/DenomTrace RPC + QueryHistoricalInfoResponse is response type for the + Query/HistoricalInfo RPC method. default: @@ -23746,19 +27607,18 @@ paths: "value": "1.212s" } parameters: - - name: hash - description: >- - hash (in hex format) or denom (full denom with ibc prefix) of the - denomination trace information. + - name: height + description: height defines at which height to query the historical info. in: path required: true type: string + format: int64 tags: - Query - /ibc/apps/transfer/v1/params: + /cosmos/staking/v1beta1/params: get: - summary: Params queries all parameters of the ibc-transfer module. - operationId: IbcApplicationsTransferV1Params + summary: Parameters queries the staking parameters. + operationId: CosmosStakingV1Beta1Params responses: '200': description: A successful response. @@ -23766,25 +27626,38 @@ paths: type: object properties: params: - description: params defines the parameters of the module. + description: params holds all the parameters of this module. type: object properties: - send_enabled: - type: boolean + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 description: >- - send_enabled enables or disables all cross-chain token - transfers from this - - chain. - receive_enabled: - type: boolean + max_entries is the max entries for either unbonding + delegation or redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - - chain. + historical_entries is the number of historical entries to + persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission + rate that a validator can charge their delegators description: >- - QueryParamsResponse is the response type for the Query/Params RPC + QueryParamsResponse is response type for the Query/Params RPC method. default: description: An unexpected error response. @@ -23973,156 +27846,25 @@ paths: } tags: - Query - /ibc/core/channel/v1/channels: + /cosmos/staking/v1beta1/pool: get: - summary: Channels queries all the IBC channels of a chain. - operationId: IbcCoreChannelV1Channels + summary: Pool queries the pool info. + operationId: CosmosStakingV1Beta1Pool responses: '200': description: A successful response. schema: type: object properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height + pool: + description: pool defines the pool info. type: object properties: - revision_number: + not_bonded_tokens: type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + bonded_tokens: type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels - RPC method. + description: QueryPoolResponse is response type for the Query/Pool RPC method. default: description: An unexpected error response. schema: @@ -24308,292 +28050,466 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}': + /cosmos/staking/v1beta1/validators: get: - summary: Channel queries an IBC Channel. - operationId: IbcCoreChannelV1Channel + summary: Validators queries all validators that match the given status. + operationId: CosmosStakingV1Beta1Validators responses: '200': description: A successful response. schema: type: object properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + protocol buffer message. This string must contain at + least - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on + one "/" character. The last segment of the URL's + path must represent - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - description: >- - Channel defines pipeline for exactly-once packet delivery - between specific + the fully qualified name of the type (as in - modules on separate blockchains, which has at least one end - capable of + `path/google.protobuf.Duration`). The name should be + in a canonical form - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + (e.g., leading "." is not accepted). - RevisionNumber the same. However some consensus algorithms may - choose to - reset the height in certain conditions e.g. hard forks, - state-machine + In practice, teams usually precompile into the + binary all types that they - breaking changes In these cases, the RevisionNumber is - incremented so that + expect it to use in the context of Any. However, for + URLs which use the - height continues to be monitonically increasing even as the - RevisionHeight + scheme `http`, `https`, or no scheme, one can + optionally set up a type - gets reset - description: >- - QueryChannelResponse is the response type for the Query/Channel - RPC method. + server that maps type URLs to message definitions as + follows: - Besides the Channel end, it includes a proof and the height from - which the - proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + * If no scheme is provided, `https` is assumed. - protocol buffer message. This string must contain at - least + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - one "/" character. The last segment of the URL's path - must represent + Note: this functionality is not currently available + in the official - the fully qualified name of the type (as in + protobuf release, and it is not used for type URLs + beginning with - `path/google.protobuf.Duration`). The name should be in - a canonical form + type.googleapis.com. - (e.g., leading "." is not accepted). + Schemes other than `http`, `https` (or the empty + scheme) might be - In practice, teams usually precompile into the binary - all types that they + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - expect it to use in the context of Any. However, for - URLs which use the + URL that describes the type of the serialized message. - scheme `http`, `https`, or no scheme, one can optionally - set up a type - server that maps type URLs to message definitions as - follows: + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods of + the Any type. - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Example 1: Pack and unpack a message in C++. - Note: this functionality is not currently available in - the official + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - protobuf release, and it is not used for type URLs - beginning with + Example 2: Pack and unpack a message in Java. - type.googleapis.com. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + Example 3: Pack and unpack a message in Python. - Schemes other than `http`, `https` (or the empty scheme) - might be + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Example 4: Pack and unpack a message in Go - URL that describes the type of the serialized message. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - Protobuf library provides support to pack/unpack Any values - in the form + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - of utility functions or additional generated methods of the - Any type. + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - Example 1: Pack and unpack a message in C++. + name "y.z". - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + JSON - Example 3: Pack and unpack a message in Python. + ==== - foo = Foo(...) - any = Any() - any.Pack(foo) + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators contains all the queried validators. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) @@ -24668,40 +28584,88 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true + - name: status + description: status enables to query for validators matching a given status. + in: query + required: false type: string - - name: port_id - description: port unique identifier - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state': + '/cosmos/staking/v1beta1/validators/{validator_addr}': get: - summary: >- - ChannelClientState queries for the client state for the channel - associated - - with the provided channel identifiers. - operationId: IbcCoreChannelV1ChannelClientState + summary: Validator queries validator info for given validator address. + operationId: CosmosStakingV1Beta1Validator responses: '200': description: A successful response. schema: type: object properties: - identified_client_state: - title: client state associated with the channel + validator: type: object properties: - client_id: + operator_address: type: string - title: client identifier - client_state: + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: type: object properties: '@type': @@ -24874,48 +28838,136 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. - reset the height in certain conditions e.g. hard forks, - state-machine - breaking changes In these cases, the RevisionNumber is - incremented so that + Since: cosmos-sdk 0.46 + description: >- + Validator defines a validator, together with the total amount + of the - height continues to be monitonically increasing even as the - RevisionHeight + Validator's bond shares and their exchange rate to coins. + Slashing results in - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method + a decrease in the exchange rate, allowing correct calculation + of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided + by the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + title: >- + QueryValidatorResponse is response type for the Query/Validator + RPC method default: description: An unexpected error response. schema: @@ -25102,239 +29154,95 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}': + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': get: - summary: |- - ChannelConsensusState queries for the consensus state for the channel - associated with the provided channel identifiers. - operationId: IbcCoreChannelV1ChannelConsensusState + summary: ValidatorDelegations queries delegate info for given validator. + operationId: CosmosStakingV1Beta1ValidatorDelegations responses: '200': description: A successful response. schema: type: object properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of + the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + owned by one delegator, and is associated with the + voting power of one - If the embedded message type is well-known and has a custom - JSON + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - representation, that representation will be embedded adding a - field - `value` which holds the custom JSON in addition to the `@type` + NOTE: The amount field is an Int which implements the + custom method - field. Example (for message [google.protobuf.Duration][]): + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + balance in addition to shares which is more suitable for + client responses. + pagination: + description: pagination defines the pagination in the response. type: object properties: - revision_number: + next_key: type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight + title: >- + total is total number of results available if + PageRequest.count_total - gets reset + was set, its value is undefined otherwise title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method default: description: An unexpected error response. schema: @@ -25521,82 +29429,130 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - - name: revision_number - description: revision number of the consensus state - in: path - required: true + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false type: string format: uint64 - - name: revision_height - description: revision height of the consensus state - in: path - required: true + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence': + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': get: - summary: >- - NextSequenceReceive returns the next receive sequence for a given - channel. - operationId: IbcCoreChannelV1NextSequenceReceive + summary: Delegation queries delegate info for given validator delegator pair. + operationId: CosmosStakingV1Beta1Delegation responses: '200': description: A successful response. schema: type: object properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + delegation_response: type: object properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is - RevisionNumber the same. However some consensus algorithms may - choose to + owned by one delegator, and is associated with the voting + power of one - reset the height in certain conditions e.g. hard forks, - state-machine + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - breaking changes In these cases, the RevisionNumber is - incremented so that - height continues to be monitonically increasing even as the - RevisionHeight + NOTE: The amount field is an Int which implements the + custom method - gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + QueryDelegationResponse is response type for the Query/Delegation + RPC method. default: description: An unexpected error response. schema: @@ -25783,121 +29739,82 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements': + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': get: - summary: >- - PacketAcknowledgements returns all the packet acknowledgements - associated - - with a channel. - operationId: IbcCoreChannelV1PacketAcknowledgements + summary: |- + UnbondingDelegation queries unbonding info for given validator delegator + pair. + operationId: CosmosStakingV1Beta1UnbondingDelegation responses: '200': description: A successful response. schema: type: object properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response + unbond: type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + delegator_address: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: type: string - format: uint64 - title: the height within the given revision + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that + UnbondingDelegation stores all of a single delegator's + unbonding bonds - height continues to be monitonically increasing even as the - RevisionHeight + for a single validator in an time-ordered list. + description: >- + QueryDelegationResponse is response type for the + Query/UnbondingDelegation - gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method + RPC method. default: description: An unexpected error response. schema: @@ -26084,127 +30001,105 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: packet_commitment_sequences - description: list of packet sequences - in: query - required: false - type: array - items: - type: string - format: uint64 - collectionFormat: multi tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}': + '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': get: - summary: PacketAcknowledgement queries a stored packet acknowledgement hash. - operationId: IbcCoreChannelV1PacketAcknowledgement + summary: >- + ValidatorUnbondingDelegations queries unbonding delegations of a + validator. + operationId: CosmosStakingV1Beta1ValidatorUnbondingDelegations responses: '200': description: A successful response. schema: type: object properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. type: object properties: - revision_number: + next_key: type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketAcknowledgementResponse defines the client query - response for a + title: >- + total is total number of results available if + PageRequest.count_total - packet which also includes a proof and the height from which the + was set, its value is undefined otherwise + description: >- + QueryValidatorUnbondingDelegationsResponse is response type for + the - proof was retrieved + Query/ValidatorUnbondingDelegations RPC method. default: description: An unexpected error response. schema: @@ -26391,421 +30286,338 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - - name: sequence - description: packet sequence - in: path - required: true + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments': - get: - summary: |- - PacketCommitments returns all the packet commitments hashes associated - with a channel. - operationId: IbcCoreChannelV1PacketCommitments + /cosmos/tx/v1beta1/simulate: + post: + summary: Simulate simulates executing a transaction for estimating gas usage. + operationId: CosmosTxV1Beta1Simulate responses: '200': description: A successful response. schema: type: object properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response + gas_info: + description: gas_info is the information about gas used in the simulation. type: object properties: - next_key: + gas_wanted: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + format: uint64 + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gas_used: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. type: object properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: + data: type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine + format: byte + description: >- + Data is any data returned from message or handler + execution. It MUST be - breaking changes In these cases, the RevisionNumber is - incremented so that + length prefixed in order to separate data from multiple + message executions. - height continues to be monitonically increasing even as the - RevisionHeight + Deprecated. This field is still populated, but prefer + msg_response instead - gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string + because it also contains the Msg response typeURL. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, + associated with an event. description: >- - A URL/resource name that uniquely identifies the type of - the serialized + Event allows application developers to attach additional + information to - protocol buffer message. This string must contain at - least + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx + and ResponseDeliverTx. - one "/" character. The last segment of the URL's path - must represent + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted + during message - the fully qualified name of the type (as in + or handler execution. + msg_responses: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - `path/google.protobuf.Duration`). The name should be in - a canonical form + protocol buffer message. This string must contain at + least - (e.g., leading "." is not accepted). + one "/" character. The last segment of the URL's + path must represent + the fully qualified name of the type (as in - In practice, teams usually precompile into the binary - all types that they + `path/google.protobuf.Duration`). The name should be + in a canonical form - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with + (e.g., leading "." is not accepted). - type.googleapis.com. + In practice, teams usually precompile into the + binary all types that they - Schemes other than `http`, `https` (or the empty scheme) - might be + expect it to use in the context of Any. However, for + URLs which use the - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + scheme `http`, `https`, or no scheme, one can + optionally set up a type - URL that describes the type of the serialized message. + server that maps type URLs to message definitions as + follows: - Protobuf library provides support to pack/unpack Any values - in the form + * If no scheme is provided, `https` is assumed. - of utility functions or additional generated methods of the - Any type. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available + in the official - Example 1: Pack and unpack a message in C++. + protobuf release, and it is not used for type URLs + beginning with - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + type.googleapis.com. - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Schemes other than `http`, `https` (or the empty + scheme) might be - Example 3: Pack and unpack a message in Python. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + URL that describes the type of the serialized message. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Protobuf library provides support to pack/unpack Any + values in the form - The pack methods provided by protobuf library will by - default use + of utility functions or additional generated methods of + the Any type. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - methods only use the fully qualified type name after the - last '/' + Example 1: Pack and unpack a message in C++. - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - name "y.z". + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + Example 3: Pack and unpack a message in Python. - JSON + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - ==== + Example 4: Pack and unpack a message in Go - The JSON representation of an `Any` value uses the regular + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - representation of the deserialized, embedded message, with - an + The pack methods provided by protobuf library will by + default use - additional field `@type` which contains the type URL. - Example: + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + methods only use the fully qualified type name after the + last '/' - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - If the embedded message type is well-known and has a custom - JSON + name "y.z". - representation, that representation will be embedded adding - a field - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message [google.protobuf.Duration][]): + JSON - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + ==== - It is less efficient than using key. Only one of offset or key - should + The JSON representation of an `Any` value uses the + regular - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + representation of the deserialized, embedded message, + with an - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + additional field `@type` which contains the type URL. + Example: - a count of the total number of items available for pagination in - UIs. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - count_total is only respected when offset is used. It is ignored - when key + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks': - get: - summary: >- - UnreceivedAcks returns all the unreceived IBC acknowledgements - associated + If the embedded message type is well-known and has a + custom JSON - with a channel and sequences. - operationId: IbcCoreChannelV1UnreceivedAcks - responses: - '200': - description: A successful response. - schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + representation, that representation will be embedded + adding a field - RevisionNumber the same. However some consensus algorithms may - choose to + `value` which holds the custom JSON in addition to the + `@type` - reset the height in certain conditions e.g. hard forks, - state-machine + field. Example (for message + [google.protobuf.Duration][]): - breaking changes In these cases, the RevisionNumber is - incremented so that + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + msg_responses contains the Msg handler responses type + packed in Anys. - height continues to be monitonically increasing even as the - RevisionHeight - gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method + Since: cosmos-sdk 0.46 + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. default: description: An unexpected error response. schema: @@ -26992,80 +30804,25 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_ack_sequences - description: list of acknowledgement sequences - in: path + - name: body + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + in: body required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets': + - Service + /cosmos/tx/v1beta1/txs: get: - summary: >- - UnreceivedPackets returns all the unreceived IBC packets associated with - a - - channel and sequences. - operationId: IbcCoreChannelV1UnreceivedPackets + summary: GetTxsEvent fetches txs by event. + operationId: CosmosTxV1Beta1GetTxsEvent responses: '200': description: A successful response. schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' default: description: An unexpected error response. schema: @@ -27252,84 +31009,436 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_commitment_sequences - description: list of packet sequences - in: path - required: true + - name: events + description: events is the list of transaction event type. + in: query + required: false type: array items: type: string - format: uint64 - collectionFormat: csv - minItems: 1 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}': - get: - summary: PacketCommitment queries a stored packet commitment hash. - operationId: IbcCoreChannelV1PacketCommitment - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to + collectionFormat: multi + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - reset the height in certain conditions e.g. hard forks, - state-machine + It is less efficient than using key. Only one of offset or key + should - breaking changes In these cases, the RevisionNumber is - incremented so that + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - height continues to be monitonically increasing even as the - RevisionHeight + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response - for a packet + a count of the total number of items available for pagination in + UIs. - which also includes a proof and the height from which the proof - was + count_total is only respected when offset is used. It is ignored + when key - retrieved - default: + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: order_by + description: |2- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + in: query + required: false + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED + - name: page + description: >- + page is the page number to query, starts at 1. If not provided, will + default to first page. + in: query + required: false + type: string + format: uint64 + - name: limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + tags: + - Service + post: + summary: BroadcastTx broadcast transaction. + operationId: CosmosTxV1Beta1BroadcastTx + responses: + '200': + description: A successful response. + schema: + type: object + properties: + tx_response: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: >- + The output of the application's logger (raw string). May + be + + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where + the key and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where + all the attributes + + contain key/value pairs that are strings instead + of raw bytes. + description: >- + Events contains a slice of Event objects that were + emitted during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed + tx ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the + weighted median of + + the timestamps of the valid votes in the block.LastCommit. + For height == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx + and ResponseDeliverTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a + transaction. Note, + + these events include those emitted by processing all the + messages and those + + emitted from the ante. Whereas Logs contains the events, + with + + additional metadata, emitted only by processing the + messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + default: description: An unexpected error response. schema: type: object @@ -27515,82 +31624,57 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}': - get: - summary: >- - PacketReceipt queries if a given packet sequence has been received on - the + - name: body + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest - queried chain - operationId: IbcCoreChannelV1PacketReceipt - responses: - '200': - description: A successful response. + RPC method. + in: body + required: true schema: type: object properties: - received: - type: boolean - title: success flag for if receipt exists - proof: + tx_bytes: type: string format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a - packet + BroadcastMode specifies the broadcast mode for the + TxService.Broadcast RPC method. - receipt which also includes a proof, and the height from which the - proof was + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for + the tx to be committed in a block. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for + a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns + immediately. + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest - retrieved + RPC method. + tags: + - Service + '/cosmos/tx/v1beta1/txs/block/{height}': + get: + summary: GetBlockWithTxs fetches a block with decoded txs. + description: 'Since: cosmos-sdk 0.45.2' + operationId: CosmosTxV1Beta1GetBlockWithTxs + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' default: description: An unexpected error response. schema: @@ -27777,176 +31861,79 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier + - name: height + description: height is the height of the block to query. in: path required: true type: string - - name: sequence - description: packet sequence - in: path - required: true + format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/connections/{connection}/channels': - get: - summary: |- - ConnectionChannels queries all the channels associated with a connection - end. - operationId: IbcCoreChannelV1ConnectionChannels - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the + It is less efficient than using key. Only one of offset or key + should - corresponding request message has used PageRequest. + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - RevisionNumber the same. However some consensus algorithms may - choose to + a count of the total number of items available for pagination in + UIs. - reset the height in certain conditions e.g. hard forks, - state-machine + count_total is only respected when offset is used. It is ignored + when key - breaking changes In these cases, the RevisionNumber is - incremented so that + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - height continues to be monitonically increasing even as the - RevisionHeight - gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Service + '/cosmos/tx/v1beta1/txs/{hash}': + get: + summary: GetTx fetches a tx by hash. + operationId: CosmosTxV1Beta1GetTx + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' default: description: An unexpected error response. schema: @@ -28133,83 +32120,30 @@ paths: "value": "1.212s" } parameters: - - name: connection - description: connection unique identifier + - name: hash + description: 'hash is the tx hash to query, encoded as a hex string.' in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - - Query - /ibc/client/v1/params: + - Service + '/cosmos/upgrade/v1beta1/applied_plan/{name}': get: - summary: ClientParams queries all parameters of the ibc client. - operationId: IbcCoreClientV1ClientParams + summary: AppliedPlan queries a previously applied upgrade plan by its name. + operationId: CosmosUpgradeV1Beta1AppliedPlan responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: >- - allowed_clients defines the list of allowed client state - types. + height: + type: string + format: int64 + description: height is the block height at which the plan was applied. description: >- - QueryClientParamsResponse is the response type for the - Query/ClientParams RPC + QueryAppliedPlanResponse is the response type for the + Query/AppliedPlan RPC method. default: @@ -28397,241 +32331,29 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: name + description: name is the name of the applied plan to query for. + in: path + required: true + type: string tags: - Query - /ibc/core/client/v1/client_states: + /cosmos/upgrade/v1beta1/authority: get: - summary: ClientStates queries all the IBC light clients of a chain. - operationId: IbcCoreClientV1ClientStates + summary: Returns the account with authority to conduct upgrades + description: 'Since: cosmos-sdk 0.46' + operationId: CosmosUpgradeV1Beta1Authority responses: '200': description: A successful response. schema: type: object properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the - Query/ClientStates RPC - - method. + address: + type: string + description: 'Since: cosmos-sdk 0.46' + title: QueryAuthorityResponse is the response type for Query/Authority default: description: An unexpected error response. schema: @@ -28817,276 +32539,246 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/core/client/v1/client_states/{client_id}': + /cosmos/upgrade/v1beta1/current_plan: get: - summary: ClientState queries an IBC light client. - operationId: IbcCoreClientV1ClientState + summary: CurrentPlan queries the current upgrade plan. + operationId: CosmosUpgradeV1Beta1CurrentPlan responses: '200': description: A successful response. schema: type: object properties: - client_state: + plan: + description: plan is the current upgrade plan. type: object properties: - '@type': + name: type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized + Sets the name for the upgrade. This name will be used by + the upgraded - protocol buffer message. This string must contain at least + version of the software to apply any special "on-upgrade" + commands during - one "/" character. The last segment of the URL's path must - represent + the first BeginBlock method after the upgrade is applied. + It is also used - the fully qualified name of the type (as in + to detect whether a software version can handle a given + upgrade. If no - `path/google.protobuf.Duration`). The name should be in a - canonical form + upgrade handler with this name has been set in the + software, it will be - (e.g., leading "." is not accepted). + assumed that the software is out-of-date when the upgrade + Time or Height is + reached and the software will exit. + time: + type: string + format: date-time + description: >- + Deprecated: Time based upgrades have been deprecated. Time + based upgrade logic - In practice, teams usually precompile into the binary all - types that they + has been removed from the SDK. - expect it to use in the context of Any. However, for URLs - which use the + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: + type: string + title: >- + Any application specific upgrade info to be included + on-chain - scheme `http`, `https`, or no scheme, one can optionally - set up a type + such as a git commit that validators could automatically + upgrade to + upgraded_client_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - server that maps type URLs to message definitions as - follows: + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - * If no scheme is provided, `https` is assumed. + the fully qualified name of the type (as in - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + `path/google.protobuf.Duration`). The name should be + in a canonical form - Note: this functionality is not currently available in the - official + (e.g., leading "." is not accepted). - protobuf release, and it is not used for type URLs - beginning with - type.googleapis.com. + In practice, teams usually precompile into the binary + all types that they + expect it to use in the context of Any. However, for + URLs which use the - Schemes other than `http`, `https` (or the empty scheme) - might be + scheme `http`, `https`, or no scheme, one can + optionally set up a type - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + server that maps type URLs to message definitions as + follows: - URL that describes the type of the serialized message. + * If no scheme is provided, `https` is assumed. - Protobuf library provides support to pack/unpack Any values in - the form + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - of utility functions or additional generated methods of the - Any type. + Note: this functionality is not currently available in + the official + protobuf release, and it is not used for type URLs + beginning with - Example 1: Pack and unpack a message in C++. + type.googleapis.com. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Schemes other than `http`, `https` (or the empty + scheme) might be - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 3: Pack and unpack a message in Python. + URL that describes the type of the serialized message. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Protobuf library provides support to pack/unpack Any + values in the form - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + of utility functions or additional generated methods of + the Any type. - The pack methods provided by protobuf library will by default - use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + Example 1: Pack and unpack a message in C++. - methods only use the fully qualified type name after the last - '/' + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + Example 2: Pack and unpack a message in Java. - name "y.z". + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + Example 3: Pack and unpack a message in Python. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - JSON + Example 4: Pack and unpack a message in Go - ==== + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The JSON representation of an `Any` value uses the regular + The pack methods provided by protobuf library will by + default use - representation of the deserialized, embedded message, with an + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - additional field `@type` which contains the type URL. Example: + methods only use the fully qualified type name after the + last '/' - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + name "y.z". - If the embedded message type is well-known and has a custom - JSON - representation, that representation will be embedded adding a - field - `value` which holds the custom JSON in addition to the `@type` + JSON - field. Example (for message [google.protobuf.Duration][]): + ==== - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + The JSON representation of an `Any` value uses the regular - RevisionNumber the same. However some consensus algorithms may - choose to + representation of the deserialized, embedded message, with + an - reset the height in certain conditions e.g. hard forks, - state-machine + additional field `@type` which contains the type URL. + Example: - breaking changes In these cases, the RevisionNumber is - incremented so that + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - height continues to be monitonically increasing even as the - RevisionHeight + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - gets reset - description: >- - QueryClientStateResponse is the response type for the - Query/ClientState RPC + If the embedded message type is well-known and has a + custom JSON - method. Besides the client state, it includes a proof and the - height from + representation, that representation will be embedded + adding a field - which the proof was retrieved. + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryCurrentPlanResponse is the response type for the + Query/CurrentPlan RPC + + method. default: description: An unexpected error response. schema: @@ -29272,31 +32964,46 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: client_id - description: client state unique identifier - in: path - required: true - type: string tags: - Query - '/ibc/core/client/v1/client_status/{client_id}': + /cosmos/upgrade/v1beta1/module_versions: get: - summary: Status queries the status of an IBC client. - operationId: IbcCoreClientV1ClientStatus + summary: ModuleVersions queries the list of module versions from state. + description: 'Since: cosmos-sdk 0.43' + operationId: CosmosUpgradeV1Beta1ModuleVersions responses: '200': description: A successful response. schema: type: object properties: - status: - type: string + module_versions: + type: array + items: + type: object + properties: + name: + type: string + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + description: |- + ModuleVersion specifies a module and its consensus version. + + Since: cosmos-sdk 0.43 + description: >- + module_versions is a list of module names with their consensus + versions. description: >- - QueryClientStatusResponse is the response type for the - Query/ClientStatus RPC + QueryModuleVersionsResponse is the response type for the + Query/ModuleVersions - method. It returns the current status of the IBC client. + RPC method. + + + Since: cosmos-sdk 0.43 default: description: An unexpected error response. schema: @@ -29483,272 +33190,349 @@ paths: "value": "1.212s" } parameters: - - name: client_id - description: client unique identifier - in: path - required: true + - name: module_name + description: |- + module_name is a field to query a specific module + consensus version from state. Leaving this empty will + fetch the full list of module versions from state + in: query + required: false type: string tags: - Query - '/ibc/core/client/v1/consensus_states/{client_id}': + '/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}': get: - summary: |- - ConsensusStates queries all the consensus state associated with a given - client. - operationId: IbcCoreClientV1ConsensusStates + summary: >- + UpgradedConsensusState queries the consensus state that will serve + + as a trusted kernel for the next version of this chain. It will only be + + stored at the last height of this chain. + + UpgradedConsensusState RPC not supported with legacy querier + + This rpc is deprecated now that IBC has its own replacement + + (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) + operationId: CosmosUpgradeV1Beta1UpgradedConsensusState responses: '200': description: A successful response. schema: type: object properties: - consensus_states: + upgraded_consensus_state: + type: string + format: byte + title: 'Since: cosmos-sdk 0.43' + description: >- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState + + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision + '@type': + type: string description: >- - Normally the RevisionHeight is incremented at each - height while keeping - - RevisionNumber the same. However some consensus - algorithms may choose to + A URL/resource name that uniquely identifies the type of + the serialized - reset the height in certain conditions e.g. hard forks, - state-machine + protocol buffer message. This string must contain at + least - breaking changes In these cases, the RevisionNumber is - incremented so that + one "/" character. The last segment of the URL's path + must represent - height continues to be monitonically increasing even as - the RevisionHeight + the fully qualified name of the type (as in - gets reset - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + `path/google.protobuf.Duration`). The name should be in + a canonical form - protocol buffer message. This string must contain at - least + (e.g., leading "." is not accepted). - one "/" character. The last segment of the URL's - path must represent - the fully qualified name of the type (as in + In practice, teams usually precompile into the binary + all types that they - `path/google.protobuf.Duration`). The name should be - in a canonical form + expect it to use in the context of Any. However, for + URLs which use the - (e.g., leading "." is not accepted). + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - In practice, teams usually precompile into the - binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + * If no scheme is provided, `https` is assumed. - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available in + the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any values + in the form + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by - default use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + The pack methods provided by protobuf library will by + default use - methods only use the fully qualified type name after the - last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + methods only use the fully qualified type name after the + last '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + name "y.z". - JSON - ==== + JSON - The JSON representation of an `Any` value uses the - regular + ==== - representation of the deserialized, embedded message, - with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. - Example: + representation of the deserialized, embedded message, with + an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. + Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a - custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded - adding a field + If the embedded message type is well-known and has a custom + JSON - `value` which holds the custom JSON in addition to the - `@type` + representation, that representation will be embedded adding + a field - field. Example (for message - [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the + `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height + field. Example (for message [google.protobuf.Duration][]): - field. - title: consensus states associated with the identifier - pagination: - title: pagination response + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: last_height + description: |- + last height of the current chain must be sent in request + as this is the height under which next consensus state is stored + in: path + required: true + type: string + format: int64 + tags: + - Query + /ibc/apps/interchain_accounts/controller/v1/params: + get: + summary: Params queries all parameters of the ICA controller submodule. + operationId: IbcApplicationsInterchainAccountsControllerV1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method + controller_enabled: + type: boolean + description: >- + controller_enabled enables or disables the controller + submodule. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /ibc/apps/interchain_accounts/host/v1/params: + get: + summary: Params queries all parameters of the ICA host submodule. + operationId: IbcApplicationsInterchainAccountsHostV1Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + host_enabled: + type: boolean + description: host_enabled enables or disables the host submodule. + allow_messages: + type: array + items: + type: string + description: >- + allow_messages defines a list of sdk message typeURLs + allowed to be executed on a host chain. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + '/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address': + get: + summary: >- + EscrowAddress returns the escrow address for a particular port and + channel id. + operationId: IbcApplicationsTransferV1EscrowAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + escrow_address: + type: string + title: the escrow account address + description: >- + QueryEscrowAddressResponse is the response type of the + EscrowAddress RPC method. default: description: An unexpected error response. schema: @@ -29935,140 +33719,36 @@ paths: "value": "1.212s" } parameters: - - name: client_id - description: client identifier + - name: channel_id + description: unique channel identifier in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: port_id + description: unique port identifier + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/core/client/v1/consensus_states/{client_id}/heights': + '/ibc/apps/transfer/v1/denom_hashes/{trace}': get: - summary: >- - ConsensusStateHeights queries the height of every consensus states - associated with a given client. - operationId: IbcCoreClientV1ConsensusStateHeights + summary: DenomHash queries a denomination hash information. + operationId: IbcApplicationsTransferV1DenomHash responses: '200': description: A successful response. schema: type: object properties: - consensus_state_heights: - type: array - items: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms - may choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes - of updating and - - freezing clients - title: consensus state heights - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. + hash: + type: string + description: hash (in hex format) of the denomination trace information. + description: >- + QueryDenomHashResponse is the response type for the + Query/DenomHash RPC - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStateHeightsResponse is the response type for the - Query/ConsensusStateHeights RPC method + method. default: description: An unexpected error response. schema: @@ -30255,289 +33935,345 @@ paths: "value": "1.212s" } parameters: - - name: client_id - description: client identifier + - name: trace + description: 'The denomination trace ([port_id]/[channel_id])+/[denom]' in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}': + /ibc/apps/transfer/v1/denom_traces: get: - summary: >- - ConsensusState queries a consensus state associated with a client state - at - - a given height. - operationId: IbcCoreClientV1ConsensusState + summary: DenomTraces queries all denomination traces. + operationId: IbcApplicationsTransferV1DenomTraces responses: '200': description: A successful response. schema: type: object properties: - consensus_state: + denom_traces: + type: array + items: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used + for tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible + tokens and the + + source tracing information path. + description: denom_traces returns all denominations trace information. + pagination: + description: pagination defines the pagination in the response. type: object properties: - '@type': + next_key: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - protocol buffer message. This string must contain at least + was set, its value is undefined otherwise + description: >- + QueryConnectionsResponse is the response type for the + Query/DenomTraces RPC - one "/" character. The last segment of the URL's path must - represent + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - the fully qualified name of the type (as in + protocol buffer message. This string must contain at + least - `path/google.protobuf.Duration`). The name should be in a - canonical form + one "/" character. The last segment of the URL's path + must represent - (e.g., leading "." is not accepted). + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in + a canonical form - In practice, teams usually precompile into the binary all - types that they + (e.g., leading "." is not accepted). - expect it to use in the context of Any. However, for URLs - which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + In practice, teams usually precompile into the binary + all types that they - server that maps type URLs to message definitions as - follows: + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently available in the - official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available in + the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in - the form - of utility functions or additional generated methods of the - Any type. + Protobuf library provides support to pack/unpack Any values + in the form + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default - use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the last - '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a custom + JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding + a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - consensus state associated with the client identifier at the - given height - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - RevisionNumber the same. However some consensus algorithms may - choose to + It is less efficient than using key. Only one of offset or key + should - reset the height in certain conditions e.g. hard forks, - state-machine + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - breaking changes In these cases, the RevisionNumber is - incremented so that + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - height continues to be monitonically increasing even as the - RevisionHeight + a count of the total number of items available for pagination in + UIs. - gets reset - title: >- - Height is a monotonically increasing data type + count_total is only respected when offset is used. It is ignored + when key - that can be compared against another Height for the purposes - of updating and + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - freezing clients - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - RPC method + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/apps/transfer/v1/denom_traces/{hash}': + get: + summary: DenomTrace queries a denomination trace information. + operationId: IbcApplicationsTransferV1DenomTrace + responses: + '200': + description: A successful response. + schema: + type: object + properties: + denom_trace: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used + for tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible + tokens and the + + source tracing information path. + description: >- + QueryDenomTraceResponse is the response type for the + Query/DenomTrace RPC + + method. default: description: An unexpected error response. schema: @@ -30724,217 +34460,46 @@ paths: "value": "1.212s" } parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: revision_number - description: consensus state revision number - in: path - required: true - type: string - format: uint64 - - name: revision_height - description: consensus state revision height + - name: hash + description: >- + hash (in hex format) or denom (full denom with ibc prefix) of the + denomination trace information. in: path required: true type: string - format: uint64 - - name: latest_height - description: >- - latest_height overrrides the height field and queries the latest - stored - - ConsensusState - in: query - required: false - type: boolean tags: - Query - /ibc/core/client/v1/upgraded_client_states: + /ibc/apps/transfer/v1/params: get: - summary: UpgradedClientState queries an Upgraded IBC light client. - operationId: IbcCoreClientV1UpgradedClientState + summary: Params queries all parameters of the ibc-transfer module. + operationId: IbcApplicationsTransferV1Params responses: '200': description: A successful response. schema: type: object properties: - upgraded_client_state: + params: + description: params defines the parameters of the module. type: object properties: - '@type': - type: string + send_enabled: + type: boolean description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they + send_enabled enables or disables all cross-chain token + transfers from this - expect it to use in the context of Any. However, for URLs - which use the + chain. + receive_enabled: + type: boolean + description: >- + receive_enabled enables or disables all cross-chain token + transfers to this - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - description: |- - QueryUpgradedClientStateResponse is the response type for the - Query/UpgradedClientState RPC method. + chain. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: @@ -31122,189 +34687,157 @@ paths: } tags: - Query - /ibc/core/client/v1/upgraded_consensus_states: + /ibc/core/channel/v1/channels: get: - summary: UpgradedConsensusState queries an Upgraded IBC consensus state. - operationId: IbcCoreClientV1UpgradedConsensusState + summary: Channels queries all the IBC channels of a chain. + operationId: IbcCoreChannelV1Channels responses: '200': description: A successful response. schema: type: object properties: - upgraded_consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: - protobuf release, and it is not used for type URLs - beginning with + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - type.googleapis.com. + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: >- + - ORDER_NONE_UNSPECIFIED: zero-value for channel + ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: >- + IdentifiedChannel defines a channel with additional port and + channel - Schemes other than `http`, `https` (or the empty scheme) - might be + identifier fields. + description: list of stored channels of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - used with implementation specific semantics. - additionalProperties: {} + was set, its value is undefined otherwise description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: + PageResponse is to be embedded in gRPC response messages where + the - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + corresponding request message has used PageRequest. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - If the embedded message type is well-known and has a custom - JSON + RevisionNumber the same. However some consensus algorithms may + choose to - representation, that representation will be embedded adding a - field + reset the height in certain conditions e.g. hard forks, + state-machine - `value` which holds the custom JSON in addition to the `@type` + breaking changes In these cases, the RevisionNumber is + incremented so that - field. Example (for message [google.protobuf.Duration][]): + height continues to be monitonically increasing even as the + RevisionHeight - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: Consensus state associated with the request identifier - description: |- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState RPC method. + gets reset + description: >- + QueryChannelsResponse is the response type for the Query/Channels + RPC method. default: description: An unexpected error response. schema: @@ -31490,31 +35023,155 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/ibc/core/connection/v1/client_connections/{client_id}': + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}': get: - summary: |- - ClientConnections queries the connection paths associated with a client - state. - operationId: IbcCoreConnectionV1ClientConnections + summary: Channel queries an IBC Channel. + operationId: IbcCoreChannelV1Channel responses: '200': description: A successful response. schema: type: object properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string + channel: + title: channel associated with the request identifiers + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: + + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + description: >- + Channel defines pipeline for exactly-once packet delivery + between specific + + modules on separate blockchains, which has at least one end + capable of + + sending packets and one end capable of receiving packets. + proof: + type: string format: byte title: merkle proof of existence proof_height: - title: height at which the proof was generated + title: height at which the proof was retrieved type: object properties: revision_number: @@ -31542,9 +35199,14 @@ paths: RevisionHeight gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method + description: >- + QueryChannelResponse is the response type for the Query/Channel + RPC method. + + Besides the Channel end, it includes a proof and the height from + which the + + proof was retrieved. default: description: An unexpected error response. schema: @@ -31731,140 +35393,224 @@ paths: "value": "1.212s" } parameters: - - name: client_id - description: client identifier associated with a connection + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier in: path required: true type: string tags: - Query - /ibc/core/connection/v1/connections: + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state': get: - summary: Connections queries all the IBC connections of a chain. - operationId: IbcCoreConnectionV1Connections + summary: >- + ChannelClientState queries for the client state for the channel + associated + + with the provided channel identifiers. + operationId: IbcCoreChannelV1ChannelClientState responses: '200': description: A successful response. schema: type: object properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + '@type': + type: string description: >- - Version defines the versioning scheme used to - negotiate the IBC verison in + A URL/resource name that uniquely identifies the type + of the serialized - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings - or protocols for + protocol buffer message. This string must contain at + least - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given + one "/" character. The last segment of the URL's path + must represent - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a + the fully qualified name of the type (as in - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. + `path/google.protobuf.Duration`). The name should be + in a canonical form - The constructed key from the Path and the key will - be append(Path.KeyPath, + (e.g., leading "." is not accepted). - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: >- - IdentifiedConnection defines a connection with additional - connection - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + In practice, teams usually precompile into the binary + all types that they - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the + expect it to use in the context of Any. However, for + URLs which use the - corresponding request message has used PageRequest. + scheme `http`, `https`, or no scheme, one can + optionally set up a type - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: >- + IdentifiedClientState defines a client state with an + additional client + + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved type: object properties: revision_number: @@ -31892,11 +35638,9 @@ paths: RevisionHeight gets reset - description: >- - QueryConnectionsResponse is the response type for the - Query/Connections RPC - - method. + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method default: description: An unexpected error response. schema: @@ -32083,157 +35827,203 @@ paths: "value": "1.212s" } parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false + - name: channel_id + description: channel unique identifier + in: path + required: true type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: port_id + description: port unique identifier + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/core/connection/v1/connections/{connection_id}': + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}': get: - summary: Connection queries an IBC connection end. - operationId: IbcCoreConnectionV1Connection + summary: |- + ChannelConsensusState queries for the consensus state for the channel + associated with the provided channel identifiers. + operationId: IbcCoreChannelV1ChannelConsensusState responses: '200': description: A successful response. schema: type: object properties: - connection: - title: connection associated with the request identifier + consensus_state: type: object properties: - client_id: + '@type': type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to negotiate - the IBC verison in - - the connection handshake. description: >- - IBC version which can be utilised to determine encodings - or protocols for + A URL/resource name that uniquely identifies the type of + the serialized - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given + protocol buffer message. This string must contain at least - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a + one "/" character. The last segment of the URL's path must + represent - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. + the fully qualified name of the type (as in - The constructed key from the Path and the key will be - append(Path.KeyPath, + `path/google.protobuf.Duration`). The name should be in a + canonical form - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can - be used for + (e.g., leading "." is not accepted). - packet-verification NOTE: delay period logic is only - implemented by some - clients. + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - ConnectionEnd defines a stateful object on a chain connected - to another + `Any` contains an arbitrary serialized protocol buffer message + along with a - separate one. + URL that describes the type of the serialized message. - NOTE: there must only be 2 defined ConnectionEnds to establish - a connection between two chains. + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state proof: type: string format: byte @@ -32267,14 +36057,9 @@ paths: RevisionHeight gets reset - description: >- - QueryConnectionResponse is the response type for the - Query/Connection RPC - - method. Besides the connection end, it includes a proof and the - height from - - which the proof was retrieved. + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method default: description: An unexpected error response. schema: @@ -32461,211 +36246,46 @@ paths: "value": "1.212s" } parameters: - - name: connection_id - description: connection unique identifier + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: revision_number + description: revision number of the consensus state + in: path + required: true + type: string + format: uint64 + - name: revision_height + description: revision height of the consensus state in: path required: true type: string + format: uint64 tags: - Query - '/ibc/core/connection/v1/connections/{connection_id}/client_state': + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence': get: - summary: |- - ConnectionClientState queries the client state associated with the - connection. - operationId: IbcCoreConnectionV1ConnectionClientState + summary: >- + NextSequenceReceive returns the next receive sequence for a given + channel. + operationId: IbcCoreChannelV1NextSequenceReceive responses: '200': description: A successful response. schema: type: object properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. + next_sequence_receive: + type: string + format: uint64 + title: next sequence receive number proof: type: string format: byte @@ -32700,8 +36320,8 @@ paths: gets reset title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method + QuerySequenceResponse is the request type for the + Query/QueryNextSequenceReceiveResponse RPC method default: description: An unexpected error response. schema: @@ -32888,198 +36508,399 @@ paths: "value": "1.212s" } parameters: - - name: connection_id - description: connection identifier + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier in: path required: true type: string tags: - Query - '/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}': + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements': get: - summary: |- - ConnectionConsensusState queries the consensus state associated with the - connection. - operationId: IbcCoreConnectionV1ConnectionConsensusState + summary: >- + PacketAcknowledgements returns all the packet acknowledgements + associated + + with a channel. + operationId: IbcCoreChannelV1PacketAcknowledgements responses: '200': description: A successful response. schema: type: object properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in + acknowledgements: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve + and store - `path/google.protobuf.Duration`). The name should be in a - canonical form + packet commitments, acknowledgements, and receipts. - (e.g., leading "." is not accepted). + Caller is responsible for knowing the context necessary to + interpret this + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - In practice, teams usually precompile into the binary all - types that they + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - expect it to use in the context of Any. However, for URLs - which use the + corresponding request message has used PageRequest. - scheme `http`, `https`, or no scheme, one can optionally - set up a type + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - server that maps type URLs to message definitions as - follows: + RevisionNumber the same. However some consensus algorithms may + choose to + reset the height in certain conditions e.g. hard forks, + state-machine - * If no scheme is provided, `https` is assumed. + breaking changes In these cases, the RevisionNumber is + incremented so that - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + height continues to be monitonically increasing even as the + RevisionHeight - Note: this functionality is not currently available in the - official + gets reset + title: |- + QueryPacketAcknowledgemetsResponse is the request type for the + Query/QueryPacketAcknowledgements RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protobuf release, and it is not used for type URLs - beginning with + protocol buffer message. This string must contain at + least - type.googleapis.com. + one "/" character. The last segment of the URL's path + must represent + the fully qualified name of the type (as in - Schemes other than `http`, `https` (or the empty scheme) - might be + `path/google.protobuf.Duration`). The name should be in + a canonical form - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + (e.g., leading "." is not accepted). - URL that describes the type of the serialized message. + In practice, teams usually precompile into the binary + all types that they - Protobuf library provides support to pack/unpack Any values in - the form + expect it to use in the context of Any. However, for + URLs which use the - of utility functions or additional generated methods of the - Any type. + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: - Example 1: Pack and unpack a message in C++. + * If no scheme is provided, `https` is assumed. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default - use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the last - '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a custom + JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding + a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: packet_commitment_sequences + description: list of packet sequences + in: query + required: false + type: array + items: + type: string + format: uint64 + collectionFormat: multi + tags: + - Query + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}': + get: + summary: PacketAcknowledgement queries a stored packet acknowledgement hash. + operationId: IbcCoreChannelV1PacketAcknowledgement + responses: + '200': + description: A successful response. + schema: + type: object + properties: + acknowledgement: type: string - title: client ID associated with the consensus state + format: byte + title: packet associated with the request fields proof: type: string format: byte @@ -33113,9 +36934,13 @@ paths: RevisionHeight gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method + title: >- + QueryPacketAcknowledgementResponse defines the client query + response for a + + packet which also includes a proof and the height from which the + + proof was retrieved default: description: An unexpected error response. schema: @@ -33302,6820 +37127,20982 @@ paths: "value": "1.212s" } parameters: - - name: connection_id - description: connection identifier + - name: channel_id + description: channel unique identifier in: path required: true type: string - - name: revision_number + - name: port_id + description: port unique identifier in: path required: true type: string - format: uint64 - - name: revision_height + - name: sequence + description: packet sequence in: path required: true type: string format: uint64 tags: - Query -definitions: - cosmos.auth.v1beta1.Params: - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: Params defines the parameters for the auth module. - cosmos.auth.v1beta1.QueryAccountResponse: - type: object - properties: - account: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments': + get: + summary: |- + PacketCommitments returns all the packet commitments hashes associated + with a channel. + operationId: IbcCoreChannelV1PacketCommitments + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commitments: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve + and store - protocol buffer message. This string must contain at least + packet commitments, acknowledgements, and receipts. - one "/" character. The last segment of the URL's path must - represent + Caller is responsible for knowing the context necessary to + interpret this - the fully qualified name of the type (as in + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - `path/google.protobuf.Duration`). The name should be in a - canonical form + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - (e.g., leading "." is not accepted). + corresponding request message has used PageRequest. + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - In practice, teams usually precompile into the binary all types - that they + RevisionNumber the same. However some consensus algorithms may + choose to - expect it to use in the context of Any. However, for URLs which - use the + reset the height in certain conditions e.g. hard forks, + state-machine - scheme `http`, `https`, or no scheme, one can optionally set up a - type + breaking changes In these cases, the RevisionNumber is + incremented so that - server that maps type URLs to message definitions as follows: + height continues to be monitonically increasing even as the + RevisionHeight + gets reset + title: |- + QueryPacketCommitmentsResponse is the request type for the + Query/QueryPacketCommitments RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - * If no scheme is provided, `https` is assumed. + protocol buffer message. This string must contain at + least - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + one "/" character. The last segment of the URL's path + must represent - Note: this functionality is not currently available in the - official + the fully qualified name of the type (as in - protobuf release, and it is not used for type URLs beginning with + `path/google.protobuf.Duration`). The name should be in + a canonical form - type.googleapis.com. + (e.g., leading "." is not accepted). - Schemes other than `http`, `https` (or the empty scheme) might be + In practice, teams usually precompile into the binary + all types that they - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + expect it to use in the context of Any. However, for + URLs which use the - URL that describes the type of the serialized message. + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any type. + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Example 1: Pack and unpack a message in C++. + Note: this functionality is not currently available in + the official - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + protobuf release, and it is not used for type URLs + beginning with - Example 2: Pack and unpack a message in Java. + type.googleapis.com. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Schemes other than `http`, `https` (or the empty scheme) + might be - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 4: Pack and unpack a message in Go + URL that describes the type of the serialized message. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + Protobuf library provides support to pack/unpack Any values + in the form - 'type.googleapis.com/full.type.name' as the type URL and the unpack + of utility functions or additional generated methods of the + Any type. - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Example 1: Pack and unpack a message in C++. - name "y.z". + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - JSON + Example 3: Pack and unpack a message in Python. - ==== + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - The JSON representation of an `Any` value uses the regular + Example 4: Pack and unpack a message in Go - representation of the deserialized, embedded message, with an + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - additional field `@type` which contains the type URL. Example: + The pack methods provided by protobuf library will by + default use - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + methods only use the fully qualified type name after the + last '/' - If the embedded message type is well-known and has a custom JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - representation, that representation will be embedded adding a field + name "y.z". - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - cosmos.auth.v1beta1.QueryAccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + JSON - protocol buffer message. This string must contain at least + ==== - one "/" character. The last segment of the URL's path must - represent + The JSON representation of an `Any` value uses the regular - the fully qualified name of the type (as in + representation of the deserialized, embedded message, with + an - `path/google.protobuf.Duration`). The name should be in a - canonical form + additional field `@type` which contains the type URL. + Example: - (e.g., leading "." is not accepted). + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - In practice, teams usually precompile into the binary all types - that they + If the embedded message type is well-known and has a custom + JSON - expect it to use in the context of Any. However, for URLs which - use the + representation, that representation will be embedded adding + a field - scheme `http`, `https`, or no scheme, one can optionally set up - a type + `value` which holds the custom JSON in addition to the + `@type` - server that maps type URLs to message definitions as follows: + field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - * If no scheme is provided, `https` is assumed. + It is less efficient than using key. Only one of offset or key + should - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - Note: this functionality is not currently available in the - official + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - protobuf release, and it is not used for type URLs beginning - with + a count of the total number of items available for pagination in + UIs. - type.googleapis.com. + count_total is only respected when offset is used. It is ignored + when key + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks': + get: + summary: >- + UnreceivedAcks returns all the unreceived IBC acknowledgements + associated - URL that describes the type of the serialized message. + with a channel and sequences. + operationId: IbcCoreChannelV1UnreceivedAcks + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived acknowledgement sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + RevisionNumber the same. However some consensus algorithms may + choose to - Protobuf library provides support to pack/unpack Any values in the - form + reset the height in certain conditions e.g. hard forks, + state-machine - of utility functions or additional generated methods of the Any - type. + breaking changes In these cases, the RevisionNumber is + incremented so that + height continues to be monitonically increasing even as the + RevisionHeight - Example 1: Pack and unpack a message in C++. + gets reset + title: |- + QueryUnreceivedAcksResponse is the response type for the + Query/UnreceivedAcks RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + protocol buffer message. This string must contain at + least - Example 2: Pack and unpack a message in Java. + one "/" character. The last segment of the URL's path + must represent - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + the fully qualified name of the type (as in - Example 3: Pack and unpack a message in Python. + `path/google.protobuf.Duration`). The name should be in + a canonical form - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + (e.g., leading "." is not accepted). - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + In practice, teams usually precompile into the binary + all types that they - The pack methods provided by protobuf library will by default use + expect it to use in the context of Any. However, for + URLs which use the - 'type.googleapis.com/full.type.name' as the type URL and the unpack + scheme `http`, `https`, or no scheme, one can optionally + set up a type - methods only use the fully qualified type name after the last '/' + server that maps type URLs to message definitions as + follows: - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in + the official - JSON + protobuf release, and it is not used for type URLs + beginning with - ==== + type.googleapis.com. - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + Schemes other than `http`, `https` (or the empty scheme) + might be - additional field `@type` which contains the type URL. Example: + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + URL that describes the type of the serialized message. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + Protobuf library provides support to pack/unpack Any values + in the form - representation, that representation will be embedded adding a field + of utility functions or additional generated methods of the + Any type. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Example 1: Pack and unpack a message in C++. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAccountsResponse is the response type for the Query/Accounts RPC - method. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Since: cosmos-sdk 0.43 - cosmos.auth.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.base.query.v1beta1.PageRequest: - type: object - properties: - key: - type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: - type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: - type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - If left empty it will default to a value to be set by each app. - count_total: - type: boolean - description: >- - count_total is set to true to indicate that the result set should - include + Example 3: Pack and unpack a message in Python. - a count of the total number of items available for pagination in UIs. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - count_total is only respected when offset is used. It is ignored when - key + Example 4: Pack and unpack a message in Go - is set. - reverse: - type: boolean - description: >- - reverse is set to true if results are to be returned in the descending - order. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - Since: cosmos-sdk 0.43 - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - google.protobuf.Any: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + methods only use the fully qualified type name after the + last '/' - protocol buffer message. This string must contain at least + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - one "/" character. The last segment of the URL's path must represent + name "y.z". - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical - form - (e.g., leading "." is not accepted). + JSON + ==== - In practice, teams usually precompile into the binary all types that - they + The JSON representation of an `Any` value uses the regular - expect it to use in the context of Any. However, for URLs which use - the + representation of the deserialized, embedded message, with + an - scheme `http`, `https`, or no scheme, one can optionally set up a type + additional field `@type` which contains the type URL. + Example: - server that maps type URLs to message definitions as follows: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - * If no scheme is provided, `https` is assumed. + If the embedded message type is well-known and has a custom + JSON - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + representation, that representation will be embedded adding + a field - Note: this functionality is not currently available in the official + `value` which holds the custom JSON in addition to the + `@type` - protobuf release, and it is not used for type URLs beginning with + field. Example (for message [google.protobuf.Duration][]): - type.googleapis.com. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_ack_sequences + description: list of acknowledgement sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 + tags: + - Query + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets': + get: + summary: >- + UnreceivedPackets returns all the unreceived IBC packets associated with + a + channel and sequences. + operationId: IbcCoreChannelV1UnreceivedPackets + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived packet sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - Schemes other than `http`, `https` (or the empty scheme) might be + RevisionNumber the same. However some consensus algorithms may + choose to - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along with - a + reset the height in certain conditions e.g. hard forks, + state-machine - URL that describes the type of the serialized message. + breaking changes In these cases, the RevisionNumber is + incremented so that + height continues to be monitonically increasing even as the + RevisionHeight - Protobuf library provides support to pack/unpack Any values in the form + gets reset + title: |- + QueryUnreceivedPacketsResponse is the response type for the + Query/UnreceivedPacketCommitments RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - of utility functions or additional generated methods of the Any type. + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - Example 1: Pack and unpack a message in C++. + the fully qualified name of the type (as in - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + `path/google.protobuf.Duration`). The name should be in + a canonical form - Example 2: Pack and unpack a message in Java. + (e.g., leading "." is not accepted). - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + In practice, teams usually precompile into the binary + all types that they - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + expect it to use in the context of Any. However, for + URLs which use the - Example 4: Pack and unpack a message in Go + scheme `http`, `https`, or no scheme, one can optionally + set up a type - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + server that maps type URLs to message definitions as + follows: - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + * If no scheme is provided, `https` is assumed. - methods only use the fully qualified type name after the last '/' + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Note: this functionality is not currently available in + the official - name "y.z". + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - JSON + Schemes other than `http`, `https` (or the empty scheme) + might be - ==== + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - The JSON representation of an `Any` value uses the regular + URL that describes the type of the serialized message. - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + Protobuf library provides support to pack/unpack Any values + in the form - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + of utility functions or additional generated methods of the + Any type. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + Example 1: Pack and unpack a message in C++. - representation, that representation will be embedded adding a field + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - `value` which holds the custom JSON in addition to the `@type` + Example 2: Pack and unpack a message in Java. - field. Example (for message [google.protobuf.Duration][]): + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - google.rpc.Status: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + Example 3: Pack and unpack a message in Python. - protocol buffer message. This string must contain at least + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - one "/" character. The last segment of the URL's path must - represent + Example 4: Pack and unpack a message in Go - the fully qualified name of the type (as in + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - `path/google.protobuf.Duration`). The name should be in a - canonical form + The pack methods provided by protobuf library will by + default use - (e.g., leading "." is not accepted). + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + methods only use the fully qualified type name after the + last '/' - In practice, teams usually precompile into the binary all types - that they + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - expect it to use in the context of Any. However, for URLs which - use the + name "y.z". - scheme `http`, `https`, or no scheme, one can optionally set up - a type - server that maps type URLs to message definitions as follows: + JSON - * If no scheme is provided, `https` is assumed. + ==== - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + The JSON representation of an `Any` value uses the regular - Note: this functionality is not currently available in the - official + representation of the deserialized, embedded message, with + an - protobuf release, and it is not used for type URLs beginning - with + additional field `@type` which contains the type URL. + Example: - type.googleapis.com. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - Schemes other than `http`, `https` (or the empty scheme) might - be + If the embedded message type is well-known and has a custom + JSON - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + representation, that representation will be embedded adding + a field - URL that describes the type of the serialized message. + `value` which holds the custom JSON in addition to the + `@type` + field. Example (for message [google.protobuf.Duration][]): - Protobuf library provides support to pack/unpack Any values in the - form + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_commitment_sequences + description: list of packet sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 + tags: + - Query + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}': + get: + summary: PacketCommitment queries a stored packet commitment hash. + operationId: IbcCoreChannelV1PacketCommitment + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commitment: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - of utility functions or additional generated methods of the Any - type. + RevisionNumber the same. However some consensus algorithms may + choose to + reset the height in certain conditions e.g. hard forks, + state-machine - Example 1: Pack and unpack a message in C++. + breaking changes In these cases, the RevisionNumber is + incremented so that - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + height continues to be monitonically increasing even as the + RevisionHeight - Example 2: Pack and unpack a message in Java. + gets reset + title: >- + QueryPacketCommitmentResponse defines the client query response + for a packet - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + which also includes a proof and the height from which the proof + was - Example 3: Pack and unpack a message in Python. + retrieved + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + protocol buffer message. This string must contain at + least - Example 4: Pack and unpack a message in Go + one "/" character. The last segment of the URL's path + must represent - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + the fully qualified name of the type (as in - The pack methods provided by protobuf library will by default use + `path/google.protobuf.Duration`). The name should be in + a canonical form - 'type.googleapis.com/full.type.name' as the type URL and the unpack + (e.g., leading "." is not accepted). - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + In practice, teams usually precompile into the binary + all types that they - name "y.z". + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - JSON - ==== + * If no scheme is provided, `https` is assumed. - The JSON representation of an `Any` value uses the regular + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - representation of the deserialized, embedded message, with an + Note: this functionality is not currently available in + the official - additional field `@type` which contains the type URL. Example: + protobuf release, and it is not used for type URLs + beginning with - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + type.googleapis.com. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + Schemes other than `http`, `https` (or the empty scheme) + might be - representation, that representation will be embedded adding a field + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - `value` which holds the custom JSON in addition to the `@type` + URL that describes the type of the serialized message. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - cosmos.authz.v1beta1.Grant: - type: object - properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + Protobuf library provides support to pack/unpack Any values + in the form - protocol buffer message. This string must contain at least + of utility functions or additional generated methods of the + Any type. - one "/" character. The last segment of the URL's path must - represent - the fully qualified name of the type (as in + Example 1: Pack and unpack a message in C++. - `path/google.protobuf.Duration`). The name should be in a - canonical form + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - (e.g., leading "." is not accepted). + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - In practice, teams usually precompile into the binary all types - that they + Example 3: Pack and unpack a message in Python. - expect it to use in the context of Any. However, for URLs which - use the + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - scheme `http`, `https`, or no scheme, one can optionally set up a - type + Example 4: Pack and unpack a message in Go - server that maps type URLs to message definitions as follows: + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - * If no scheme is provided, `https` is assumed. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + methods only use the fully qualified type name after the + last '/' - Note: this functionality is not currently available in the - official + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - protobuf release, and it is not used for type URLs beginning with + name "y.z". - type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might be + JSON - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + ==== - URL that describes the type of the serialized message. + The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with + an - Protobuf library provides support to pack/unpack Any values in the - form + additional field `@type` which contains the type URL. + Example: - of utility functions or additional generated methods of the Any type. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - Example 1: Pack and unpack a message in C++. + If the embedded message type is well-known and has a custom + JSON - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + representation, that representation will be embedded adding + a field - Example 2: Pack and unpack a message in Java. + `value` which holds the custom JSON in addition to the + `@type` - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + field. Example (for message [google.protobuf.Duration][]): - Example 3: Pack and unpack a message in Python. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: sequence + description: packet sequence + in: path + required: true + type: string + format: uint64 + tags: + - Query + '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}': + get: + summary: >- + PacketReceipt queries if a given packet sequence has been received on + the - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + queried chain + operationId: IbcCoreChannelV1PacketReceipt + responses: + '200': + description: A successful response. + schema: + type: object + properties: + received: + type: boolean + title: success flag for if receipt exists + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - Example 4: Pack and unpack a message in Go + RevisionNumber the same. However some consensus algorithms may + choose to - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + reset the height in certain conditions e.g. hard forks, + state-machine - The pack methods provided by protobuf library will by default use + breaking changes In these cases, the RevisionNumber is + incremented so that - 'type.googleapis.com/full.type.name' as the type URL and the unpack + height continues to be monitonically increasing even as the + RevisionHeight - methods only use the fully qualified type name after the last '/' + gets reset + title: >- + QueryPacketReceiptResponse defines the client query response for a + packet - in the type URL, for example "foo.bar.com/x/y.z" will yield type + receipt which also includes a proof, and the height from which the + proof was - name "y.z". + retrieved + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - JSON + the fully qualified name of the type (as in - ==== + `path/google.protobuf.Duration`). The name should be in + a canonical form - The JSON representation of an `Any` value uses the regular + (e.g., leading "." is not accepted). - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + In practice, teams usually precompile into the binary + all types that they - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + expect it to use in the context of Any. However, for + URLs which use the - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + scheme `http`, `https`, or no scheme, one can optionally + set up a type - If the embedded message type is well-known and has a custom JSON + server that maps type URLs to message definitions as + follows: - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + * If no scheme is provided, `https` is assumed. - field. Example (for message [google.protobuf.Duration][]): + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - cosmos.authz.v1beta1.GrantAuthorization: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + Note: this functionality is not currently available in + the official - protocol buffer message. This string must contain at least + protobuf release, and it is not used for type URLs + beginning with - one "/" character. The last segment of the URL's path must - represent + type.googleapis.com. - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + Schemes other than `http`, `https` (or the empty scheme) + might be - (e.g., leading "." is not accepted). + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - In practice, teams usually precompile into the binary all types - that they - expect it to use in the context of Any. However, for URLs which - use the + Protobuf library provides support to pack/unpack Any values + in the form - scheme `http`, `https`, or no scheme, one can optionally set up a - type + of utility functions or additional generated methods of the + Any type. - server that maps type URLs to message definitions as follows: + Example 1: Pack and unpack a message in C++. - * If no scheme is provided, `https` is assumed. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Example 2: Pack and unpack a message in Java. - Note: this functionality is not currently available in the - official + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - protobuf release, and it is not used for type URLs beginning with + Example 3: Pack and unpack a message in Python. - type.googleapis.com. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - Schemes other than `http`, `https` (or the empty scheme) might be + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + The pack methods provided by protobuf library will by + default use - URL that describes the type of the serialized message. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + methods only use the fully qualified type name after the + last '/' - Protobuf library provides support to pack/unpack Any values in the - form + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - of utility functions or additional generated methods of the Any type. + name "y.z". - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + JSON - Example 2: Pack and unpack a message in Java. + ==== - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + The JSON representation of an `Any` value uses the regular - Example 3: Pack and unpack a message in Python. + representation of the deserialized, embedded message, with + an - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + additional field `@type` which contains the type URL. + Example: - Example 4: Pack and unpack a message in Go + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - The pack methods provided by protobuf library will by default use + If the embedded message type is well-known and has a custom + JSON - 'type.googleapis.com/full.type.name' as the type URL and the unpack + representation, that representation will be embedded adding + a field - methods only use the fully qualified type name after the last '/' + `value` which holds the custom JSON in addition to the + `@type` - in the type URL, for example "foo.bar.com/x/y.z" will yield type + field. Example (for message [google.protobuf.Duration][]): - name "y.z". + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: sequence + description: packet sequence + in: path + required: true + type: string + format: uint64 + tags: + - Query + '/ibc/core/channel/v1/connections/{connection}/channels': + get: + summary: |- + ConnectionChannels queries all the channels associated with a connection + end. + operationId: IbcCoreChannelV1ConnectionChannels + responses: + '200': + description: A successful response. + schema: + type: object + properties: + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: >- + - ORDER_NONE_UNSPECIFIED: zero-value for channel + ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on - JSON + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: >- + IdentifiedChannel defines a channel with additional port and + channel - ==== + identifier fields. + description: list of channels associated with a connection. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - The JSON representation of an `Any` value uses the regular + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - representation of the deserialized, embedded message, with an + corresponding request message has used PageRequest. - additional field `@type` which contains the type URL. Example: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + RevisionNumber the same. However some consensus algorithms may + choose to - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + reset the height in certain conditions e.g. hard forks, + state-machine - If the embedded message type is well-known and has a custom JSON + breaking changes In these cases, the RevisionNumber is + incremented so that - representation, that representation will be embedded adding a field + height continues to be monitonically increasing even as the + RevisionHeight - `value` which holds the custom JSON in addition to the `@type` + gets reset + title: |- + QueryConnectionChannelsResponse is the Response type for the + Query/QueryConnectionChannels RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - field. Example (for message [google.protobuf.Duration][]): + protocol buffer message. This string must contain at + least - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the grantee - and granter. + one "/" character. The last segment of the URL's path + must represent - It is used in genesis.proto and query.proto - cosmos.authz.v1beta1.MsgExecResponse: - type: object - properties: - results: - type: array - items: - type: string - format: byte - description: MsgExecResponse defines the Msg/MsgExecResponse response type. - cosmos.authz.v1beta1.MsgGrantResponse: - type: object - description: MsgGrantResponse defines the Msg/MsgGrant response type. - cosmos.authz.v1beta1.MsgRevokeResponse: - type: object - description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type. - cosmos.authz.v1beta1.QueryGranteeGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + the fully qualified name of the type (as in - protocol buffer message. This string must contain at least + `path/google.protobuf.Duration`). The name should be in + a canonical form - one "/" character. The last segment of the URL's path must - represent + (e.g., leading "." is not accepted). - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + In practice, teams usually precompile into the binary + all types that they - (e.g., leading "." is not accepted). + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally + set up a type - In practice, teams usually precompile into the binary all - types that they + server that maps type URLs to message definitions as + follows: - expect it to use in the context of Any. However, for URLs - which use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + * If no scheme is provided, `https` is assumed. - server that maps type URLs to message definitions as - follows: + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in + the official - * If no scheme is provided, `https` is assumed. + protobuf release, and it is not used for type URLs + beginning with - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + type.googleapis.com. - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning - with + Schemes other than `http`, `https` (or the empty scheme) + might be - type.googleapis.com. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Protobuf library provides support to pack/unpack Any values + in the form - URL that describes the type of the serialized message. + of utility functions or additional generated methods of the + Any type. - Protobuf library provides support to pack/unpack Any values in - the form + Example 1: Pack and unpack a message in C++. - of utility functions or additional generated methods of the Any - type. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 3: Pack and unpack a message in Python. - Example 2: Pack and unpack a message in Java. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Example 4: Pack and unpack a message in Go - Example 3: Pack and unpack a message in Python. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + The pack methods provided by protobuf library will by + default use - Example 4: Pack and unpack a message in Go + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + methods only use the fully qualified type name after the + last '/' - The pack methods provided by protobuf library will by default - use + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + name "y.z". - methods only use the fully qualified type name after the last - '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + JSON + ==== + The JSON representation of an `Any` value uses the regular - JSON + representation of the deserialized, embedded message, with + an - ==== + additional field `@type` which contains the type URL. + Example: - The JSON representation of an `Any` value uses the regular + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - representation of the deserialized, embedded message, with an + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - additional field `@type` which contains the type URL. Example: + If the embedded message type is well-known and has a custom + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + representation, that representation will be embedded adding + a field - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + `value` which holds the custom JSON in addition to the + `@type` - If the embedded message type is well-known and has a custom JSON + field. Example (for message [google.protobuf.Duration][]): - representation, that representation will be embedded adding a - field + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection + description: connection unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - `value` which holds the custom JSON in addition to the `@type` + It is less efficient than using key. Only one of offset or key + should - field. Example (for message [google.protobuf.Duration][]): + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + a count of the total number of items available for pagination in + UIs. - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - cosmos.authz.v1beta1.QueryGranterGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + count_total is only respected when offset is used. It is ignored + when key - protocol buffer message. This string must contain at least + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - one "/" character. The last segment of the URL's path must - represent - the fully qualified name of the type (as in + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/client/v1/params: + get: + summary: ClientParams queries all parameters of the ibc client. + operationId: IbcCoreClientV1ClientParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + allowed_clients: + type: array + items: + type: string + description: >- + allowed_clients defines the list of allowed client state + types. + description: >- + QueryClientParamsResponse is the response type for the + Query/ClientParams RPC - `path/google.protobuf.Duration`). The name should be in a - canonical form + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - (e.g., leading "." is not accepted). + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - In practice, teams usually precompile into the binary all - types that they + the fully qualified name of the type (as in - expect it to use in the context of Any. However, for URLs - which use the + `path/google.protobuf.Duration`). The name should be in + a canonical form - scheme `http`, `https`, or no scheme, one can optionally set - up a type + (e.g., leading "." is not accepted). - server that maps type URLs to message definitions as - follows: + In practice, teams usually precompile into the binary + all types that they - * If no scheme is provided, `https` is assumed. + expect it to use in the context of Any. However, for + URLs which use the - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + scheme `http`, `https`, or no scheme, one can optionally + set up a type - Note: this functionality is not currently available in the - official + server that maps type URLs to message definitions as + follows: - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Schemes other than `http`, `https` (or the empty scheme) - might be + Note: this functionality is not currently available in + the official - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + protobuf release, and it is not used for type URLs + beginning with - URL that describes the type of the serialized message. + type.googleapis.com. - Protobuf library provides support to pack/unpack Any values in - the form + Schemes other than `http`, `https` (or the empty scheme) + might be - of utility functions or additional generated methods of the Any - type. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any values + in the form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods of the + Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - The pack methods provided by protobuf library will by default - use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the last - '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will yield type + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + methods only use the fully qualified type name after the + last '/' - JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - ==== + name "y.z". - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a custom JSON + representation of the deserialized, embedded message, with + an - representation, that representation will be embedded adding a - field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. + If the embedded message type is well-known and has a custom + JSON - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + representation, that representation will be embedded adding + a field - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - cosmos.authz.v1beta1.QueryGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + `value` which holds the custom JSON in addition to the + `@type` - protocol buffer message. This string must contain at least + field. Example (for message [google.protobuf.Duration][]): - one "/" character. The last segment of the URL's path must - represent + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/client/v1/client_states: + get: + summary: ClientStates queries all the IBC light clients of a chain. + operationId: IbcCoreClientV1ClientStates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + client_states: + type: array + items: + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - the fully qualified name of the type (as in + protocol buffer message. This string must contain at + least - `path/google.protobuf.Duration`). The name should be in a - canonical form + one "/" character. The last segment of the URL's + path must represent - (e.g., leading "." is not accepted). + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be + in a canonical form - In practice, teams usually precompile into the binary all - types that they + (e.g., leading "." is not accepted). - expect it to use in the context of Any. However, for URLs - which use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + In practice, teams usually precompile into the + binary all types that they - server that maps type URLs to message definitions as - follows: + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can + optionally set up a type - * If no scheme is provided, `https` is assumed. + server that maps type URLs to message definitions as + follows: - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in the - official + * If no scheme is provided, `https` is assumed. - protobuf release, and it is not used for type URLs beginning - with + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - type.googleapis.com. + Note: this functionality is not currently available + in the official + protobuf release, and it is not used for type URLs + beginning with - Schemes other than `http`, `https` (or the empty scheme) - might be + type.googleapis.com. - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - URL that describes the type of the serialized message. + Schemes other than `http`, `https` (or the empty + scheme) might be + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Protobuf library provides support to pack/unpack Any values in - the form + URL that describes the type of the serialized message. - of utility functions or additional generated methods of the Any - type. + Protobuf library provides support to pack/unpack Any + values in the form - Example 1: Pack and unpack a message in C++. + of utility functions or additional generated methods of + the Any type. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 3: Pack and unpack a message in Python. + Example 2: Pack and unpack a message in Java. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 4: Pack and unpack a message in Go + Example 3: Pack and unpack a message in Python. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - The pack methods provided by protobuf library will by default - use + Example 4: Pack and unpack a message in Go - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - methods only use the fully qualified type name after the last - '/' + The pack methods provided by protobuf library will by + default use - in the type URL, for example "foo.bar.com/x/y.z" will yield type + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - name "y.z". + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + name "y.z". - JSON - ==== - The JSON representation of an `Any` value uses the regular + JSON - representation of the deserialized, embedded message, with an + ==== - additional field `@type` which contains the type URL. Example: + The JSON representation of an `Any` value uses the + regular - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + representation of the deserialized, embedded message, + with an - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + additional field `@type` which contains the type URL. + Example: - If the embedded message type is well-known and has a custom JSON + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - representation, that representation will be embedded adding a - field + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - `value` which holds the custom JSON in addition to the `@type` + If the embedded message type is well-known and has a + custom JSON - field. Example (for message [google.protobuf.Duration][]): + representation, that representation will be embedded + adding a field - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: authorizations is a list of grants granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + `value` which holds the custom JSON in addition to the + `@type` - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the Query/Authorizations RPC - method. - cosmos.bank.v1beta1.DenomUnit: - type: object - properties: - denom: - type: string - description: denom represents the string name of the given denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must + field. Example (for message + [google.protobuf.Duration][]): - raise the base_denom to in order to equal the given DenomUnit's denom + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: >- + IdentifiedClientState defines a client state with an + additional client - 1 denom = 1^exponent base_denom + identifier field. + description: list of stored ClientStates of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' - with + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - cosmos.bank.v1beta1.Input: - type: object - properties: - address: - type: string - coins: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + corresponding request message has used PageRequest. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Input models transaction input. - cosmos.bank.v1beta1.Metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit (e.g - uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + description: >- + QueryClientStatesResponse is the response type for the + Query/ClientStates RPC - raise the base_denom to in order to equal the given DenomUnit's - denom + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - 1 denom = 1^exponent base_denom + protocol buffer message. This string must contain at + least - (e.g. with a base_denom of uatom, one can create a DenomUnit of - 'atom' with + one "/" character. The last segment of the URL's path + must represent - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with exponent - = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). This - can + the fully qualified name of the type (as in - be the same as the display. + `path/google.protobuf.Duration`). The name should be in + a canonical form + (e.g., leading "." is not accepted). - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - cosmos.bank.v1beta1.MsgMultiSendResponse: - type: object - description: MsgMultiSendResponse defines the Msg/MultiSend response type. - cosmos.bank.v1beta1.MsgSendResponse: - type: object - description: MsgSendResponse defines the Msg/Send response type. - cosmos.bank.v1beta1.Output: - type: object - properties: - address: - type: string - coins: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Output models transaction outputs. - cosmos.bank.v1beta1.Params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is + In practice, teams usually precompile into the binary + all types that they - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - cosmos.bank.v1beta1.QueryAllBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + expect it to use in the context of Any. However, for + URLs which use the - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + scheme `http`, `https`, or no scheme, one can optionally + set up a type - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the Query/AllBalances - RPC + server that maps type URLs to message definitions as + follows: - method. - cosmos.bank.v1beta1.QueryBalanceResponse: - type: object - properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance RPC - method. - cosmos.bank.v1beta1.QueryDenomMetadataResponse: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - exponent represents power of 10 exponent that one must + `Any` contains an arbitrary serialized protocol buffer + message along with a - raise the base_denom to in order to equal the given - DenomUnit's denom + URL that describes the type of the serialized message. - 1 denom = 1^exponent base_denom - (e.g. with a base_denom of uatom, one can create a DenomUnit - of 'atom' with + Protobuf library provides support to pack/unpack Any values + in the form - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). - This can + of utility functions or additional generated methods of the + Any type. - be the same as the display. + Example 1: Pack and unpack a message in C++. - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - method. - cosmos.bank.v1beta1.QueryDenomsMetadataResponse: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must + Example 2: Pack and unpack a message in Java. - raise the base_denom to in order to equal the given - DenomUnit's denom + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - 1 denom = 1^exponent base_denom + Example 3: Pack and unpack a message in Python. - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can + Example 4: Pack and unpack a message in Go - be the same as the display. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the registered - tokens. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - was set, its value is undefined otherwise - description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC + methods only use the fully qualified type name after the + last '/' - method. - cosmos.bank.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - cosmos.bank.v1beta1.QuerySpendableBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + name "y.z". - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: >- - QuerySpendableBalancesResponse defines the gRPC response structure for - querying - an account's spendable balances. - cosmos.bank.v1beta1.QuerySupplyOfResponse: - type: object - properties: - amount: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + JSON - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC - method. - cosmos.bank.v1beta1.QueryTotalSupplyResponse: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + ==== - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. + The JSON representation of an `Any` value uses the regular - Since: cosmos-sdk 0.43 - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + representation of the deserialized, embedded message, with + an - was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the Query/TotalSupply - RPC + additional field `@type` which contains the type URL. + Example: - method - cosmos.bank.v1beta1.SendEnabled: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: |- - SendEnabled maps coin denom to a send_enabled status (whether a denom is - sendable). - cosmos.base.v1beta1.Coin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - including all blockchain data structures and the rules of the - application's + If the embedded message type is well-known and has a custom + JSON - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/core/client/v1/client_states/{client_id}': + get: + summary: ClientState queries an IBC light client. + operationId: IbcCoreClientV1ClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + client_state: type: object properties: - hash: + '@type': type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + proof: type: string format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision description: >- - Txs that will be applied by state @ block.Height+1. + Normally the RevisionHeight is incremented at each height + while keeping - NOTE: not all txs here are valid. We're just agreeing on the - order first. + RevisionNumber the same. However some consensus algorithms may + choose to - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryClientStateResponse is the response type for the + Query/ClientState RPC + + method. Besides the client state, it includes a proof and the + height from + + which the proof was retrieved. + default: + description: An unexpected error response. + schema: type: object properties: - evidence: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + protocol buffer message. This string must contain at + least - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + one "/" character. The last segment of the URL's path + must represent - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + the fully qualified name of the type (as in - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, + `path/google.protobuf.Duration`). The name should be in + a canonical form - including all blockchain data structures - and the rules of the application's + (e.g., leading "." is not accepted). - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client state unique identifier + in: path + required: true + type: string + tags: + - Query + '/ibc/core/client/v1/client_status/{client_id}': + get: + summary: Status queries the status of an IBC client. + operationId: IbcCoreClientV1ClientStatus + responses: + '200': + description: A successful response. + schema: type: object properties: - height: + status: type: string - format: int64 - round: + description: >- + QueryClientStatusResponse is the response type for the + Query/ClientStatus RPC + + method. It returns the current status of the IBC client. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: type: integer format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: + message: + type: string + details: type: array items: type: object properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: + '@type': type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - including all blockchain data structures and the rules of the - application's + protocol buffer message. This string must contain at + least - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. + one "/" character. The last segment of the URL's path + must represent - NOTE: not all txs here are valid. We're just agreeing on the - order first. + the fully qualified name of the type (as in - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client unique identifier + in: path + required: true + type: string + tags: + - Query + '/ibc/core/client/v1/consensus_states/{client_id}': + get: + summary: |- + ConsensusStates queries all the consensus state associated with a given + client. + operationId: IbcCoreClientV1ConsensusStates + responses: + '200': + description: A successful response. + schema: type: object properties: - evidence: + consensus_states: type: array items: type: object properties: - duplicate_vote_evidence: + height: + title: consensus state height type: object properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each + height while keeping - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + RevisionNumber the same. However some consensus + algorithms may choose to - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + reset the height in certain conditions e.g. hard forks, + state-machine - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + breaking changes In these cases, the RevisionNumber is + incremented so that - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: + height continues to be monitonically increasing even as + the RevisionHeight + + gets reset + consensus_state: type: object properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - including all blockchain data structures - and the rules of the application's + protocol buffer message. This string must contain at + least - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - description: >- - GetLatestBlockResponse is the response type for the Query/GetLatestBlock - RPC method. - cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + one "/" character. The last segment of the URL's + path must represent - protocol buffer message. This string must contain at least + the fully qualified name of the type (as in - one "/" character. The last segment of the URL's path must - represent + `path/google.protobuf.Duration`). The name should be + in a canonical form - the fully qualified name of the type (as in + (e.g., leading "." is not accepted). - `path/google.protobuf.Duration`). The name should be in a - canonical form - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the + binary all types that they + expect it to use in the context of Any. However, for + URLs which use the - In practice, teams usually precompile into the binary all - types that they + scheme `http`, `https`, or no scheme, one can + optionally set up a type - expect it to use in the context of Any. However, for URLs - which use the + server that maps type URLs to message definitions as + follows: - scheme `http`, `https`, or no scheme, one can optionally set - up a type - server that maps type URLs to message definitions as - follows: + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * If no scheme is provided, `https` is assumed. + Note: this functionality is not currently available + in the official - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + protobuf release, and it is not used for type URLs + beginning with - Note: this functionality is not currently available in the - official + type.googleapis.com. - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Protobuf library provides support to pack/unpack Any + values in the form - URL that describes the type of the serialized message. + of utility functions or additional generated methods of + the Any type. - Protobuf library provides support to pack/unpack Any values in - the form + Example 1: Pack and unpack a message in C++. - of utility functions or additional generated methods of the Any - type. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 3: Pack and unpack a message in Python. - Example 2: Pack and unpack a message in Java. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Example 4: Pack and unpack a message in Go - Example 3: Pack and unpack a message in Python. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + The pack methods provided by protobuf library will by + default use - Example 4: Pack and unpack a message in Go + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + methods only use the fully qualified type name after the + last '/' - The pack methods provided by protobuf library will by default - use + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + name "y.z". - methods only use the fully qualified type name after the last - '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + JSON + ==== + The JSON representation of an `Any` value uses the + regular - JSON + representation of the deserialized, embedded message, + with an - ==== + additional field `@type` which contains the type URL. + Example: - The JSON representation of an `Any` value uses the regular + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - representation of the deserialized, embedded message, with an + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - additional field `@type` which contains the type URL. Example: + If the embedded message type is well-known and has a + custom JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + representation, that representation will be embedded + adding a field - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + `value` which holds the custom JSON in addition to the + `@type` - If the embedded message type is well-known and has a custom JSON + field. Example (for message + [google.protobuf.Duration][]): - representation, that representation will be embedded adding a - field + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state + description: >- + ConsensusStateWithHeight defines a consensus state with an + additional height - `value` which holds the custom JSON in addition to the `@type` + field. + title: consensus states associated with the identifier + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - field. Example (for message [google.protobuf.Duration][]): + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + corresponding request message has used PageRequest. - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStatesResponse is the response type for the + Query/ConsensusStates RPC method + default: + description: An unexpected error response. + schema: type: object properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: + code: + type: integer + format: int32 + message: type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC - method. - cosmos.base.tendermint.v1beta1.GetSyncingResponse: - type: object - properties: - syncing: - type: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing RPC - method. - cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least - In practice, teams usually precompile into the binary all - types that they + one "/" character. The last segment of the URL's path + must represent - expect it to use in the context of Any. However, for URLs - which use the + the fully qualified name of the type (as in - scheme `http`, `https`, or no scheme, one can optionally set - up a type + `path/google.protobuf.Duration`). The name should be in + a canonical form - server that maps type URLs to message definitions as - follows: + (e.g., leading "." is not accepted). - * If no scheme is provided, `https` is assumed. + In practice, teams usually precompile into the binary + all types that they - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + expect it to use in the context of Any. However, for + URLs which use the - Note: this functionality is not currently available in the - official + scheme `http`, `https`, or no scheme, one can optionally + set up a type - protobuf release, and it is not used for type URLs beginning - with + server that maps type URLs to message definitions as + follows: - type.googleapis.com. + * If no scheme is provided, `https` is assumed. - Schemes other than `http`, `https` (or the empty scheme) - might be + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Note: this functionality is not currently available in + the official - URL that describes the type of the serialized message. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Protobuf library provides support to pack/unpack Any values in - the form - of utility functions or additional generated methods of the Any - type. + Schemes other than `http`, `https` (or the empty scheme) + might be + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 1: Pack and unpack a message in C++. + URL that describes the type of the serialized message. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Protobuf library provides support to pack/unpack Any values + in the form - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + of utility functions or additional generated methods of the + Any type. - Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 1: Pack and unpack a message in C++. - Example 4: Pack and unpack a message in Go + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 2: Pack and unpack a message in Java. - The pack methods provided by protobuf library will by default - use + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + Example 3: Pack and unpack a message in Python. - methods only use the fully qualified type name after the last - '/' + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Example 4: Pack and unpack a message in Go - name "y.z". + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - JSON + methods only use the fully qualified type name after the + last '/' - ==== + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - The JSON representation of an `Any` value uses the regular + name "y.z". - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + JSON - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + ==== - If the embedded message type is well-known and has a custom JSON + The JSON representation of an `Any` value uses the regular - representation, that representation will be embedded adding a - field + representation of the deserialized, embedded message, with + an - `value` which holds the custom JSON in addition to the `@type` + additional field `@type` which contains the type URL. + Example: - field. Example (for message [google.protobuf.Duration][]): + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - was set, its value is undefined otherwise - description: >- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.Module: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos.base.tendermint.v1beta1.Validator: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + If the embedded message type is well-known and has a custom + JSON - protocol buffer message. This string must contain at least + representation, that representation will be embedded adding + a field - one "/" character. The last segment of the URL's path must - represent + `value` which holds the custom JSON in addition to the + `@type` - the fully qualified name of the type (as in + field. Example (for message [google.protobuf.Duration][]): - `path/google.protobuf.Duration`). The name should be in a - canonical form + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - (e.g., leading "." is not accepted). + It is less efficient than using key. Only one of offset or key + should + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - In practice, teams usually precompile into the binary all types - that they + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - expect it to use in the context of Any. However, for URLs which - use the + a count of the total number of items available for pagination in + UIs. - scheme `http`, `https`, or no scheme, one can optionally set up a - type + count_total is only respected when offset is used. It is ignored + when key - server that maps type URLs to message definitions as follows: + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - * If no scheme is provided, `https` is assumed. + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/core/client/v1/consensus_states/{client_id}/heights': + get: + summary: >- + ConsensusStateHeights queries the height of every consensus states + associated with a given client. + operationId: IbcCoreClientV1ConsensusStateHeights + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state_heights: + type: array + items: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + RevisionNumber the same. However some consensus algorithms + may choose to - Note: this functionality is not currently available in the - official + reset the height in certain conditions e.g. hard forks, + state-machine - protobuf release, and it is not used for type URLs beginning with + breaking changes In these cases, the RevisionNumber is + incremented so that - type.googleapis.com. + height continues to be monitonically increasing even as the + RevisionHeight + gets reset + title: >- + Height is a monotonically increasing data type - Schemes other than `http`, `https` (or the empty scheme) might be + that can be compared against another Height for the purposes + of updating and - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + freezing clients + title: consensus state heights + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - URL that describes the type of the serialized message. + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + corresponding request message has used PageRequest. - Protobuf library provides support to pack/unpack Any values in the - form + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStateHeightsResponse is the response type for the + Query/ConsensusStateHeights RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - of utility functions or additional generated methods of the Any type. + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - Example 1: Pack and unpack a message in C++. + the fully qualified name of the type (as in - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + `path/google.protobuf.Duration`). The name should be in + a canonical form - Example 2: Pack and unpack a message in Java. + (e.g., leading "." is not accepted). - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + In practice, teams usually precompile into the binary + all types that they - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + expect it to use in the context of Any. However, for + URLs which use the - Example 4: Pack and unpack a message in Go + scheme `http`, `https`, or no scheme, one can optionally + set up a type - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + server that maps type URLs to message definitions as + follows: - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + * If no scheme is provided, `https` is assumed. - methods only use the fully qualified type name after the last '/' + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Note: this functionality is not currently available in + the official - name "y.z". + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - JSON + Schemes other than `http`, `https` (or the empty scheme) + might be - ==== + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - The JSON representation of an `Any` value uses the regular + URL that describes the type of the serialized message. - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + Protobuf library provides support to pack/unpack Any values + in the form - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + of utility functions or additional generated methods of the + Any type. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + Example 1: Pack and unpack a message in C++. - representation, that representation will be embedded adding a field + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - `value` which holds the custom JSON in addition to the `@type` + Example 2: Pack and unpack a message in Java. - field. Example (for message [google.protobuf.Duration][]): + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - cosmos.base.tendermint.v1beta1.VersionInfo: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - tendermint.crypto.PublicKey: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Tendermint Validators - tendermint.p2p.DefaultNodeInfo: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.DefaultNodeInfoOther: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.ProtocolVersion: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - tendermint.types.Block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, + Example 3: Pack and unpack a message in Python. - including all blockchain data structures and the rules of the - application's + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}': + get: + summary: >- + ConsensusState queries a consensus state associated with a client state + at + + a given height. + operationId: IbcCoreClientV1ConsensusState + responses: + '200': + description: A successful response. + schema: type: object properties: - hash: - type: string - format: byte - part_set_header: + consensus_state: type: object properties: - total: - type: integer - format: int64 - hash: + '@type': type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - NOTE: not all txs here are valid. We're just agreeing on the - order first. + protocol buffer message. This string must contain at least - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + consensus state associated with the client identifier at the + given height + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes + of updating and + + freezing clients + title: >- + QueryConsensusStateResponse is the response type for the + Query/ConsensusState + + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: revision_number + description: consensus state revision number + in: path + required: true + type: string + format: uint64 + - name: revision_height + description: consensus state revision height + in: path + required: true + type: string + format: uint64 + - name: latest_height + description: >- + latest_height overrrides the height field and queries the latest + stored + + ConsensusState + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/client/v1/upgraded_client_states: + get: + summary: UpgradedClientState queries an Upgraded IBC light client. + operationId: IbcCoreClientV1UpgradedClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + upgraded_client_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + description: |- + QueryUpgradedClientStateResponse is the response type for the + Query/UpgradedClientState RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/client/v1/upgraded_consensus_states: + get: + summary: UpgradedConsensusState queries an Upgraded IBC consensus state. + operationId: IbcCoreClientV1UpgradedConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + upgraded_consensus_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: Consensus state associated with the request identifier + description: |- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + '/ibc/core/connection/v1/client_connections/{client_id}': + get: + summary: |- + ClientConnections queries the connection paths associated with a client + state. + operationId: IbcCoreConnectionV1ClientConnections + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connection_paths: + type: array + items: + type: string + description: slice of all the connection paths associated with a client. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was generated + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryClientConnectionsResponse is the response type for the + Query/ClientConnections RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier associated with a connection + in: path + required: true + type: string + tags: + - Query + /ibc/core/connection/v1/connections: + get: + summary: Connections queries all the IBC connections of a chain. + operationId: IbcCoreConnectionV1Connections + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connections: + type: array + items: + type: object + properties: + id: + type: string + description: connection identifier. + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: >- + list of features compatible with the specified + identifier + description: >- + Version defines the versioning scheme used to + negotiate the IBC verison in + + the connection handshake. + title: >- + IBC version which can be utilised to determine encodings + or protocols for + + channels or packets utilising this connection + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain + associated with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty + chain associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will + be append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: delay period associated with this connection. + description: >- + IdentifiedConnection defines a connection with additional + connection + + identifier field. + description: list of stored connections of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionsResponse is the response type for the + Query/Connections RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + '/ibc/core/connection/v1/connections/{connection_id}': + get: + summary: Connection queries an IBC connection end. + operationId: IbcCoreConnectionV1Connection + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connection: + title: connection associated with the request identifier + type: object + properties: + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: >- + list of features compatible with the specified + identifier + description: >- + Version defines the versioning scheme used to negotiate + the IBC verison in + + the connection handshake. + description: >- + IBC version which can be utilised to determine encodings + or protocols for + + channels or packets utilising this connection. + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain + associated with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty + chain associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: >- + delay period that must pass before a consensus state can + be used for + + packet-verification NOTE: delay period logic is only + implemented by some + + clients. + description: >- + ConnectionEnd defines a stateful object on a chain connected + to another + + separate one. + + NOTE: there must only be 2 defined ConnectionEnds to establish + + a connection between two chains. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionResponse is the response type for the + Query/Connection RPC + + method. Besides the connection end, it includes a proof and the + height from + + which the proof was retrieved. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection unique identifier + in: path + required: true + type: string + tags: + - Query + '/ibc/core/connection/v1/connections/{connection_id}/client_state': + get: + summary: |- + ConnectionClientState queries the client state associated with the + connection. + operationId: IbcCoreConnectionV1ConnectionClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: >- + IdentifiedClientState defines a client state with an + additional client + + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionClientStateResponse is the response type for the + Query/ConnectionClientState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection identifier + in: path + required: true + type: string + tags: + - Query + '/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}': + get: + summary: |- + ConnectionConsensusState queries the consensus state associated with the + connection. + operationId: IbcCoreConnectionV1ConnectionConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionConsensusStateResponse is the response type for the + Query/ConnectionConsensusState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection identifier + in: path + required: true + type: string + - name: revision_number + in: path + required: true + type: string + format: uint64 + - name: revision_height + in: path + required: true + type: string + format: uint64 + tags: + - Query +definitions: + cosmos.auth.v1beta1.AddressBytesToStringResponse: + type: object + properties: + address_string: + type: string + description: >- + AddressBytesToStringResponse is the response type for AddressString rpc + method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.AddressStringToBytesResponse: + type: object + properties: + address_bytes: + type: string + format: byte + description: >- + AddressStringToBytesResponse is the response type for AddressBytes rpc + method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.Bech32PrefixResponse: + type: object + properties: + bech32_prefix: + type: string + description: |- + Bech32PrefixResponse is the response type for Bech32Prefix rpc method. + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.Params: + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: Params defines the parameters for the auth module. + cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: + type: object + properties: + account_address: + type: string + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method + cosmos.auth.v1beta1.QueryAccountResponse: + type: object + properties: + account: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryAccountResponse is the response type for the Query/Account RPC + method. + cosmos.auth.v1beta1.QueryAccountsResponse: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: accounts are the existing accounts + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAccountsResponse is the response type for the Query/Accounts RPC + method. + + + Since: cosmos-sdk 0.43 + cosmos.auth.v1beta1.QueryModuleAccountsResponse: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountsResponse is the response type for the + Query/ModuleAccounts RPC method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in UIs. + + count_total is only respected when offset is used. It is ignored when + key + + is set. + reverse: + type: boolean + description: >- + reverse is set to true if results are to be returned in the descending + order. + + + Since: cosmos-sdk 0.43 + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + google.protobuf.Any: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a canonical + form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types that + they + + expect it to use in the context of Any. However, for URLs which use + the + + scheme `http`, `https`, or no scheme, one can optionally set up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along with + a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + google.rpc.Status: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + cosmos.authz.v1beta1.Grant: + type: object + properties: + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, then the + grant + + doesn't have a time expiration (other conditions in `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + cosmos.authz.v1beta1.GrantAuthorization: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the grantee + and granter. + + It is used in genesis.proto and query.proto + cosmos.authz.v1beta1.MsgExecResponse: + type: object + properties: + results: + type: array + items: + type: string + format: byte + description: MsgExecResponse defines the Msg/MsgExecResponse response type. + cosmos.authz.v1beta1.MsgGrantResponse: + type: object + description: MsgGrantResponse defines the Msg/MsgGrant response type. + cosmos.authz.v1beta1.MsgRevokeResponse: + type: object + description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type. + cosmos.authz.v1beta1.QueryGranteeGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. + cosmos.authz.v1beta1.QueryGranterGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + cosmos.authz.v1beta1.QueryGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, + then the grant + + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: authorizations is a list of grants granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGrantsResponse is the response type for the Query/Authorizations RPC + method. + cosmos.bank.v1beta1.DenomOwner: + type: object + properties: + address: + type: string + description: address defines the address that owns a particular denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + DenomOwner defines structure representing an account that owns or holds a + particular denominated token. It contains the account address and account + balance of the denominated token. + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.DenomUnit: + type: object + properties: + denom: + type: string + description: denom represents the string name of the given denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' + with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + cosmos.bank.v1beta1.Input: + type: object + properties: + address: + type: string + coins: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Input models transaction input. + cosmos.bank.v1beta1.Metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit (e.g + uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's + denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of + 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with exponent + = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). This + can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used to + verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + cosmos.bank.v1beta1.MsgMultiSendResponse: + type: object + description: MsgMultiSendResponse defines the Msg/MultiSend response type. + cosmos.bank.v1beta1.MsgSendResponse: + type: object + description: MsgSendResponse defines the Msg/Send response type. + cosmos.bank.v1beta1.Output: + type: object + properties: + address: + type: string + coins: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Output models transaction outputs. + cosmos.bank.v1beta1.Params: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + default_send_enabled: + type: boolean + description: Params defines the parameters for the bank module. + cosmos.bank.v1beta1.QueryAllBalancesResponse: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllBalancesResponse is the response type for the Query/AllBalances + RPC + + method. + cosmos.bank.v1beta1.QueryBalanceResponse: + type: object + properties: + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QueryBalanceResponse is the response type for the Query/Balance RPC + method. + cosmos.bank.v1beta1.QueryDenomMetadataResponse: + type: object + properties: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit + of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). + This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used + to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. + cosmos.bank.v1beta1.QueryDenomOwnersResponse: + type: object + properties: + denom_owners: + type: array + items: + type: object + properties: + address: + type: string + description: address defines the address that owns a particular denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DenomOwner defines structure representing an account that owns or + holds a + + particular denominated token. It contains the account address and + account + + balance of the denominated token. + + + Since: cosmos-sdk 0.46 + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC + query. + + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.QueryDenomsMetadataResponse: + type: object + properties: + metadatas: + type: array + items: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used + to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the registered + tokens. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC + + method. + cosmos.bank.v1beta1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + default_send_enabled: + type: boolean + description: Params defines the parameters for the bank module. + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + cosmos.bank.v1beta1.QuerySpendableBalancesResponse: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: balances is the spendable balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QuerySpendableBalancesResponse defines the gRPC response structure for + querying + + an account's spendable balances. + + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.QuerySupplyOfResponse: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC + method. + cosmos.bank.v1beta1.QueryTotalSupplyResponse: + type: object + properties: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: |- + pagination defines the pagination in the response. + + Since: cosmos-sdk 0.43 + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the Query/TotalSupply + RPC + + method + cosmos.bank.v1beta1.SendEnabled: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: |- + SendEnabled maps coin denom to a send_enabled status (whether a denom is + sendable). + cosmos.base.v1beta1.Coin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + cosmos.base.tendermint.v1beta1.ABCIQueryResponse: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + info: + type: string + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + proof_ops: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. + The data could + + be arbitrary format, providing nessecary data for example + neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type defined + in + + Tendermint. + description: |- + ProofOps is Merkle proof defined by the list of ProofOps. + + Note: This type is a duplicate of the ProofOps proto type defined in + Tendermint. + height: + type: string + format: int64 + codespace: + type: string + description: |- + ABCIQueryResponse defines the response structure for the ABCIQuery gRPC + query. + + Note: This type is a duplicate of the ResponseQuery proto type defined in + Tendermint. + cosmos.base.tendermint.v1beta1.Block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted + as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we convert it + to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight + + RPC method. + cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetLatestBlockResponse is the response type for the Query/GetLatestBlock + RPC + + method. + cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: + type: object + properties: + default_node_info: + type: object + properties: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + application_version: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: |- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC + method. + cosmos.base.tendermint.v1beta1.GetSyncingResponse: + type: object + properties: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing RPC + method. + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.Header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted as + a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we convert it to + a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + cosmos.base.tendermint.v1beta1.Module: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos.base.tendermint.v1beta1.ProofOp: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. The data + could + + be arbitrary format, providing nessecary data for example neighbouring + node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type defined in + + Tendermint. + cosmos.base.tendermint.v1beta1.ProofOps: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. The + data could + + be arbitrary format, providing nessecary data for example + neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type defined in + + Tendermint. + description: |- + ProofOps is Merkle proof defined by the list of ProofOps. + + Note: This type is a duplicate of the ProofOps proto type defined in + Tendermint. + cosmos.base.tendermint.v1beta1.Validator: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + cosmos.base.tendermint.v1beta1.VersionInfo: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + tendermint.crypto.PublicKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Tendermint Validators + tendermint.p2p.DefaultNodeInfo: + type: object + properties: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.DefaultNodeInfoOther: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.ProtocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + tendermint.types.Block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.BlockID: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + tendermint.types.BlockIDFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + tendermint.types.Commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.CommitSig: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + tendermint.types.Data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the order + first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + tendermint.types.DuplicateVoteEvidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from validators + for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from validators + for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + tendermint.types.Evidence: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.EvidenceList: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed + two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and the + rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + tendermint.types.Header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + tendermint.types.LightBlock: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.LightClientAttackEvidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a + block in the blockchain, + + including all blockchain data structures and the rules of + the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: type: object properties: - type: + block_id_flag: type: string enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the signature is + for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a + set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.PartSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + tendermint.types.SignedHeader: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.SignedMsgType: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + tendermint.types.Validator: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + tendermint.types.ValidatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.Vote: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: |- + Vote represents a prevote, precommit, or commit vote from validators for + consensus. + tendermint.version.Consensus: + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + cosmos.crisis.v1beta1.MsgVerifyInvariantResponse: + type: object + description: MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type. + cosmos.base.v1beta1.DecCoin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + cosmos.distribution.v1beta1.DelegationDelegatorReward: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse: + type: object + description: >- + MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response + type. + cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse: + type: object + description: >- + MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response + type. + cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: 'Since: cosmos-sdk 0.46' + description: >- + MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward + response type. + cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: 'Since: cosmos-sdk 0.46' + description: >- + MsgWithdrawValidatorCommissionResponse defines the + Msg/WithdrawValidatorCommission response type. + cosmos.distribution.v1beta1.Params: + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + bonus_proposer_reward: + type: string + withdraw_addr_enabled: + type: boolean + description: Params defines the set of params for the distribution module. + cosmos.distribution.v1beta1.QueryCommunityPoolResponse: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool + + RPC method. + cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: rewards defines the rewards accrued by a delegation. + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + description: rewards defines all the rewards accrued by a delegator. + total: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: total defines the sum of all the rewards. + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: string + description: validators defines the validators a delegator is delegating for. + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: + type: object + properties: + withdraw_address: + type: string + description: withdraw_address defines the delegator address to query for. + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. + cosmos.distribution.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + bonus_proposer_reward: + type: string + withdraw_addr_enabled: + type: boolean + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: + type: object + properties: + commission: + description: commission defines the commision the validator received. + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: + type: object + properties: + rewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: >- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) + rewards + + for a validator inexpensive to track, allows simple sanity checks. + description: |- + QueryValidatorOutstandingRewardsResponse is the response type for the + Query/ValidatorOutstandingRewards RPC method. + cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: + type: object + properties: + slashes: + type: array + items: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + description: slashes defines the slashes the validator received. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorAccumulatedCommission represents accumulated commission + for a validator kept as a running counter, can be withdrawn at any time. + cosmos.distribution.v1beta1.ValidatorOutstandingRewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards + for a validator inexpensive to track, allows simple sanity checks. + cosmos.distribution.v1beta1.ValidatorSlashEvent: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse: + type: object + properties: + hash: + type: string + format: byte + description: hash defines the hash of the evidence. + description: MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type. + cosmos.evidence.v1beta1.QueryAllEvidenceResponse: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllEvidenceResponse is the response type for the Query/AllEvidence + RPC + + method. + cosmos.evidence.v1beta1.QueryEvidenceResponse: + type: object + properties: + evidence: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryEvidenceResponse is the response type for the Query/Evidence RPC + method. + cosmos.feegrant.v1beta1.Grant: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: 'allowance can be any of basic, periodic, allowed fee allowance.' + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse: + type: object + description: >- + MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response + type. + cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse: + type: object + description: >- + MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse + response type. + cosmos.feegrant.v1beta1.QueryAllowanceResponse: + type: object + properties: + allowance: + description: allowance is a allowance granted for grantee by granter. + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: 'allowance can be any of basic, periodic, allowed fee allowance.' + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: >- + QueryAllowanceResponse is the response type for the Query/Allowance RPC + method. + cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: 'allowance can be any of basic, periodic, allowed fee allowance.' + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: allowances that have been issued by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesByGranterResponse is the response type for the + Query/AllowancesByGranter RPC method. + + + Since: cosmos-sdk 0.46 + cosmos.feegrant.v1beta1.QueryAllowancesResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: 'allowance can be any of basic, periodic, allowed fee allowance.' + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: allowances are allowance's granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesResponse is the response type for the Query/Allowances RPC + method. + cosmos.gov.v1.Deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1.DepositParams: + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1.MsgDepositResponse: + type: object + description: MsgDepositResponse defines the Msg/Deposit response type. + cosmos.gov.v1.MsgExecLegacyContentResponse: + type: object + description: >- + MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response + type. + cosmos.gov.v1.MsgSubmitProposalResponse: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. + cosmos.gov.v1.MsgVoteResponse: + type: object + description: MsgVoteResponse defines the Msg/Vote response type. + cosmos.gov.v1.MsgVoteWeightedResponse: + type: object + description: MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. + cosmos.gov.v1.Proposal: + type: object + properties: + id: + type: string + format: uint64 + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + type: object + properties: + yes_count: + type: string + abstain_count: + type: string + no_count: + type: string + no_with_veto_count: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + metadata: + type: string + description: metadata is any arbitrary metadata attached to the proposal. + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1.QueryDepositResponse: + type: object + properties: + deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC + method. + cosmos.gov.v1.QueryDepositsResponse: + type: object + properties: + deposits: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + Deposit defines an amount deposited by an account address to an + active + + proposal. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1.QueryParamsResponse: + type: object + properties: + voting_params: + description: voting_params defines the parameters related to voting. + type: object + properties: + voting_period: + type: string + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a result to + be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + veto_threshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + vetoed. Default value: 1/3. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1.QueryProposalResponse: + type: object + properties: + proposal: + type: object + properties: + id: + type: string + format: uint64 + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + yes_count: + type: string + abstain_count: + type: string + no_count: + type: string + no_with_veto_count: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + metadata: + type: string + description: metadata is any arbitrary metadata attached to the proposal. + description: Proposal defines the core field members of a governance proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1.QueryProposalsResponse: + type: object + properties: + proposals: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. + When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + yes_count: + type: string + abstain_count: + type: string + no_count: + type: string + no_with_veto_count: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + metadata: + type: string + description: metadata is any arbitrary metadata attached to the proposal. + description: Proposal defines the core field members of a governance proposal. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + yes_count: + type: string + abstain_count: + type: string + no_count: + type: string + no_with_veto_count: + type: string + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1.QueryVoteResponse: + type: object + properties: + vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1.QueryVotesResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defined the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1.TallyParams: + type: object + properties: + quorum: + type: string + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + veto_threshold: + type: string + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1.TallyResult: + type: object + properties: + yes_count: + type: string + abstain_count: + type: string + no_count: + type: string + no_with_veto_count: + type: string + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1.Vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1.VotingParams: + type: object + properties: + voting_period: + type: string + description: Length of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1.WeightedVoteOption: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + cosmos.gov.v1beta1.Deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1beta1.DepositParams: + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1beta1.MsgDepositResponse: + type: object + description: MsgDepositResponse defines the Msg/Deposit response type. + cosmos.gov.v1beta1.MsgSubmitProposalResponse: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. + cosmos.gov.v1beta1.MsgVoteResponse: + type: object + description: MsgVoteResponse defines the Msg/Vote response type. + cosmos.gov.v1beta1.MsgVoteWeightedResponse: + type: object + description: |- + MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. + + Since: cosmos-sdk 0.43 + cosmos.gov.v1beta1.Proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + content: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1beta1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1beta1.QueryDepositResponse: + type: object + properties: + deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + NOTE: The amount field is an Int which implements the custom + method - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC + method. + cosmos.gov.v1beta1.QueryDepositsResponse: + type: object + properties: + deposits: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, + NOTE: The amount field is an Int which implements the custom + method - including all blockchain data structures and - the rules of the application's + signatures required by gogoproto. + description: >- + Deposit defines an amount deposited by an account address to an + active - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: + proposal. + pagination: + description: pagination defines the pagination in the response. type: object properties: - height: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1beta1.QueryParamsResponse: + type: object + properties: + voting_params: + description: voting_params defines the parameters related to voting. + type: object + properties: + voting_period: + type: string + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: + type: string + format: byte + description: >- + Minimum percentage of total stake needed to vote for a result to + be + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + veto_threshold: + type: string + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + vetoed. Default value: 1/3. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1beta1.QueryProposalResponse: + type: object + properties: + proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + content: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: type: string - format: int64 - round: - type: integer - format: int32 - block_id: + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. type: object properties: - hash: + 'yes': type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: type: array items: type: object properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: + denom: type: string - format: date-time - signature: + amount: type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.BlockID: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: type: string - format: byte - title: PartsetHeader - title: BlockID - tendermint.types.BlockIDFlag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - tendermint.types.Commit: + format: date-time + voting_end_time: + type: string + format: date-time + description: Proposal defines the core field members of a governance proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1beta1.QueryProposalsResponse: type: object properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: + proposals: type: array items: type: object properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: + proposal_id: type: string - format: date-time - signature: + format: uint64 + content: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.CommitSig: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - tendermint.types.Data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. - NOTE: not all txs here are valid. We're just agreeing on the order - first. + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. + When - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - tendermint.types.DuplicateVoteEvidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. + querying a proposal via gRPC, this field is not populated until + the - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: type: object properties: - total: - type: integer - format: int64 - hash: + denom: type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - consensus. - vote_b: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: Proposal defines the core field members of a governance proposal. + pagination: + description: pagination defines the pagination in the response. type: object properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: + next_key: type: string format: byte - validator_index: - type: integer - format: int32 - signature: + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - tendermint.types.Evidence: + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1beta1.QueryTallyResultResponse: type: object properties: - duplicate_vote_evidence: + tally: + description: tally defines the requested tally. type: object properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: + 'yes': type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: + abstain: type: string - format: int64 - byzantine_validators: + 'no': + type: string + no_with_veto: + type: string + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1beta1.QueryVoteResponse: + type: object + properties: + vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set in + queries + + if and only if `len(options) == 1` and that option has weight 1. + In all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: type: array items: type: object properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: + option: type: string - format: int64 - proposer_priority: + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.EvidenceList: + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + title: 'Since: cosmos-sdk 0.43' + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1beta1.QueryVotesResponse: type: object properties: - evidence: + votes: type: array items: type: object properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time + proposal_id: + type: string + format: uint64 + voter: + type: string + option: description: >- - DuplicateVoteEvidence contains evidence of a validator signed - two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, + Deprecated: Prefer to use `options` instead. This field is set + in queries - including all blockchain data structures and the - rules of the application's + if and only if `len(options) == 1` and that option has weight 1. + In all - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - tendermint.types.Header: - type: object - properties: - version: - title: basic block info + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + title: 'Since: cosmos-sdk 0.43' + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defined the queried votes. + pagination: + description: pagination defines the pagination in the response. type: object properties: - block: + next_key: type: string - format: uint64 - app: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1beta1.TallyParams: + type: object + properties: + quorum: + type: string + format: byte + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + format: byte description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + veto_threshold: + type: string + format: byte + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1beta1.TallyResult: + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1beta1.Vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set in + queries - including all blockchain data structures and the rules of the - application's + if and only if `len(options) == 1` and that option has weight 1. In + all - state transition machine. - chain_id: + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. type: string - height: + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + title: 'Since: cosmos-sdk 0.43' + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1beta1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1beta1.VotingParams: + type: object + properties: + voting_period: type: string - format: int64 - time: + description: Length of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1beta1.WeightedVoteOption: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + cosmos.group.v1.Exec: + type: string + enum: + - EXEC_UNSPECIFIED + - EXEC_TRY + default: EXEC_UNSPECIFIED + description: |- + Exec defines modes of execution of a proposal on creation or on new vote. + + - EXEC_UNSPECIFIED: An empty value means that there should be a separate + MsgExec request for the proposal to execute. + - EXEC_TRY: Try to execute the proposal immediately. + If the proposal is not allowed per the DecisionPolicy, + the proposal will still be open and could + be executed at a later point. + cosmos.group.v1.GroupInfo: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership structure + that + + would break existing proposals. Whenever any members weight is + changed, + + or any member is added or removed this version is incremented and will + + cause proposals based on older versions of this group to fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: type: string format: date-time - last_block_id: + description: created_at is a timestamp specifying when a group was created. + description: GroupInfo represents the high-level on-chain information for a group. + cosmos.group.v1.GroupMember: + type: object + properties: + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. type: object properties: - hash: + address: type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: + description: address is the member's account address. + weight: + type: string + description: >- + weight is the member's voting weight that should be greater than + 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + added_at: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: GroupMember represents the relationship between a group and a member. + cosmos.group.v1.GroupPolicyInfo: + type: object + properties: + address: type: string - format: byte - title: hashes of block data - data_hash: + description: address is the account address of group policy. + group_id: type: string - format: byte - validators_hash: + format: uint64 + description: group_id is the unique ID of the group. + admin: type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: + description: admin is the account address of the group admin. + metadata: type: string - format: byte - consensus_hash: + description: metadata is any arbitrary metadata to attached to the group policy. + version: type: string - format: byte - app_hash: + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decision_policy: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: type: string - format: byte - last_results_hash: + format: date-time + description: created_at is a timestamp specifying when a group policy was created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a group + policy. + cosmos.group.v1.Member: + type: object + properties: + address: type: string - format: byte - evidence_hash: + description: address is the member's account address. + weight: type: string - format: byte - title: consensus info - proposer_address: + description: weight is the member's voting weight that should be greater than 0. + metadata: type: string - format: byte - description: Header defines the structure of a Tendermint block header. - tendermint.types.LightBlock: + description: metadata is any arbitrary metadata attached to the member. + added_at: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: |- + Member represents a group member with an account address, + non-zero weight, metadata and added_at timestamp. + cosmos.group.v1.MemberRequest: type: object properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, + address: + type: string + description: address is the member's account address. + weight: + type: string + description: weight is the member's voting weight that should be greater than 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + description: |- + MemberRequest represents a group member to be used in Msg server requests. + Contrary to `Member`, it doesn't have any `added_at` field + since this field cannot be set as part of requests. + cosmos.group.v1.MsgCreateGroupPolicyResponse: + type: object + properties: + address: + type: string + description: address is the account address of the newly created group policy. + description: MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type. + cosmos.group.v1.MsgCreateGroupResponse: + type: object + properties: + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the newly created group. + description: MsgCreateGroupResponse is the Msg/CreateGroup response type. + cosmos.group.v1.MsgCreateGroupWithPolicyResponse: + type: object + properties: + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the newly created group with policy. + group_policy_address: + type: string + description: >- + group_policy_address is the account address of the newly created group + policy. + description: >- + MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response + type. + cosmos.group.v1.MsgExecResponse: + type: object + properties: + result: + description: result is the final result of the proposal execution. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + description: MsgExecResponse is the Msg/Exec request type. + cosmos.group.v1.MsgLeaveGroupResponse: + type: object + description: MsgLeaveGroupResponse is the Msg/LeaveGroup response type. + cosmos.group.v1.MsgSubmitProposalResponse: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + description: MsgSubmitProposalResponse is the Msg/SubmitProposal response type. + cosmos.group.v1.MsgUpdateGroupAdminResponse: + type: object + description: MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type. + cosmos.group.v1.MsgUpdateGroupMembersResponse: + type: object + description: MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type. + cosmos.group.v1.MsgUpdateGroupMetadataResponse: + type: object + description: >- + MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response + type. + cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse: + type: object + description: >- + MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin + response type. + cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse: + type: object + description: >- + MsgUpdateGroupPolicyDecisionPolicyResponse is the + Msg/UpdateGroupPolicyDecisionPolicy response type. + cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse: + type: object + description: >- + MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata + response type. + cosmos.group.v1.MsgVoteResponse: + type: object + description: MsgVoteResponse is the Msg/Vote response type. + cosmos.group.v1.MsgWithdrawProposalResponse: + type: object + description: MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type. + cosmos.group.v1.Proposal: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique id of the proposal. + group_policy_address: + type: string + description: group_policy_address is the account address of group policy. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the proposal. + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submit_time: + type: string + format: date-time + description: submit_time is a timestamp specifying when a proposal was submitted. + group_version: + type: string + format: uint64 + description: |- + group_version tracks the version of the group at proposal submission. + This field is here for informational purposes only. + group_policy_version: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group policy at + proposal submission. + + When a decision policy is changed, existing proposals from previous + policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of the + proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result contains the sums of all weighted votes for this - including all blockchain data structures and the rules of the - application's + proposal for each vote option. It is empty at submission, and only - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - validator_set: + populated after tallying, at voting period end or at proposal + execution, + + whichever happens first. type: object properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: + yes_count: type: string - format: int64 - tendermint.types.LightClientAttackEvidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a - block in the blockchain, + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + voting_period_end: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting must be done. - including all blockchain data structures and the rules of - the application's + Unless a successfull MsgExec is called before (to execute a proposal + whose - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the signature is - for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a - set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: + tally is successful before the voting period ends), tallying will be + done + + at this point, and the `final_tally_result`and `status` fields will be + + accordingly updated. + executor_result: + description: >- + executor_result is the final result of the proposal execution. Initial + value is NotRun. type: string - format: int64 - byzantine_validators: + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if the proposal + passes. + description: >- + Proposal defines a group proposal. Any member of a group can submit a + proposal + + for a group policy to decide upon. + + A proposal consists of a set of `sdk.Msg`s that will be executed if the + proposal + + passes as well as some optional metadata associated with the proposal. + cosmos.group.v1.ProposalExecutorResult: + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + description: |- + ProposalExecutorResult defines types of proposal executor results. + + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed. + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor. + - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state. + - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state. + cosmos.group.v1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus defines proposal statuses. + + - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed. + - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted. + - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome + passes the group policy's decision policy. + - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome + is rejected by the group policy's decision policy. + - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the + final tally. + - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner. + When this happens the final status is Withdrawn. + cosmos.group.v1.QueryGroupInfoResponse: + type: object + properties: + info: + description: info is the GroupInfo for the group. + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership structure + that + + would break existing proposals. Whenever any members weight is + changed, + + or any member is added or removed this version is incremented and + will + + cause proposals based on older versions of this group to fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: QueryGroupInfoResponse is the Query/GroupInfo response type. + cosmos.group.v1.QueryGroupMembersResponse: + type: object + properties: + members: type: array items: type: object properties: - address: + group_id: type: string - format: byte - pub_key: + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. type: object properties: - ed25519: + address: type: string - format: byte - secp256k1: + description: address is the member's account address. + weight: type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: + description: >- + weight is the member's voting weight that should be greater + than 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + added_at: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: >- + GroupMember represents the relationship between a group and a + member. + description: members are the members of the group with given group_id. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type. + cosmos.group.v1.QueryGroupPoliciesByAdminResponse: + type: object + properties: + group_policies: + type: array + items: + type: object + properties: + address: type: string - format: int64 - proposer_priority: + description: address is the account address of group policy. + group_id: type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the group + policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decision_policy: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy was + created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: group_policies are the group policies info with provided admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.types.SignedHeader: + QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin + response type. + cosmos.group.v1.QueryGroupPoliciesByGroupResponse: type: object properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, + group_policies: + type: array + items: + type: object + properties: + address: + type: string + description: address is the account address of group policy. + group_id: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + description: >- + metadata is any arbitrary metadata to attached to the group + policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decision_policy: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - including all blockchain data structures and the rules of the - application's + If the embedded message type is well-known and has a custom JSON - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.SignedMsgType: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. + representation, that representation will be embedded adding a + field - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - tendermint.types.Validator: - type: object - properties: - address: - type: string - format: byte - pub_key: + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy was + created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: >- + group_policies are the group policies info associated with the + provided group. + pagination: + description: pagination defines the pagination in the response. type: object properties: - ed25519: + next_key: type: string format: byte - secp256k1: + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - tendermint.types.ValidatorSet: + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup + response type. + cosmos.group.v1.QueryGroupPolicyInfoResponse: type: object properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: + info: type: object properties: address: type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: + description: address is the account address of group policy. + group_id: type: string - format: int64 - proposer_priority: + format: uint64 + description: group_id is the unique ID of the group. + admin: type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.Vote: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: + description: admin is the account address of the group admin. + metadata: type: string - format: byte - part_set_header: + description: >- + metadata is any arbitrary metadata to attached to the group + policy. + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decision_policy: type: object properties: - total: - type: integer - format: int64 - hash: + '@type': type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: |- - Vote represents a prevote, precommit, or commit vote from validators for - consensus. - tendermint.version.Consensus: - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - including all blockchain data structures and the rules of the - application's + protocol buffer message. This string must contain at least - state transition machine. - cosmos.crisis.v1beta1.MsgVerifyInvariantResponse: - type: object - description: MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + one "/" character. The last segment of the URL's path must + represent - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - cosmos.distribution.v1beta1.DelegationDelegatorReward: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + the fully qualified name of the type (as in - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse: - type: object - description: >- - MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response - type. - cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse: - type: object - description: >- - MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response - type. - cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse: - type: object - description: >- - MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward - response type. - cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse: - type: object - description: >- - MsgWithdrawValidatorCommissionResponse defines the - Msg/WithdrawValidatorCommission response type. - cosmos.distribution.v1beta1.Params: - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - description: Params defines the set of params for the distribution module. - cosmos.distribution.v1beta1.QueryCommunityPoolResponse: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool + If the embedded message type is well-known and has a custom JSON - RPC method. - cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + created_at: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy was + created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. + cosmos.group.v1.QueryGroupsByAdminResponse: type: object properties: - rewards: + groups: type: array items: type: object properties: - denom: + id: type: string - amount: + format: uint64 + description: id is the unique ID of the group. + admin: type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: + description: admin is the account address of the group's admin. + metadata: type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + description: metadata is any arbitrary metadata to attached to the group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + would break existing proposals. Whenever any members weight is + changed, - NOTE: The amount field is an Dec which implements the custom - method + or any member is added or removed this version is incremented + and will - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: + cause proposals based on older versions of this group to fail + total_weight: type: string - amount: + description: total_weight is the sum of the group members' weights. + created_at: type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: string - description: validators defines the validators a delegator is delegating for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - cosmos.distribution.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: >- + GroupInfo represents the high-level on-chain information for a + group. + description: groups are the groups info with the provided admin. + pagination: + description: pagination defines the pagination in the response. type: object properties: - community_tax: - type: string - base_proposer_reward: + next_key: type: string - bonus_proposer_reward: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - withdraw_addr_enabled: - type: boolean - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) - rewards + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - for a validator inexpensive to track, allows simple sanity checks. - description: |- - QueryValidatorOutstandingRewardsResponse is the response type for the - Query/ValidatorOutstandingRewards RPC method. - cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: + was set, its value is undefined otherwise + description: >- + QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response + type. + cosmos.group.v1.QueryGroupsByMemberResponse: type: object properties: - slashes: + groups: type: array items: type: object properties: - validator_period: + id: type: string format: uint64 - fraction: + description: id is the unique ID of the group. + admin: type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - description: slashes defines the slashes the validator received. + description: admin is the account address of the group's admin. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the group. + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + + would break existing proposals. Whenever any members weight is + changed, + + or any member is added or removed this version is incremented + and will + + cause proposals based on older versions of this group to fail + total_weight: + type: string + description: total_weight is the sum of the group members' weights. + created_at: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: >- + GroupInfo represents the high-level on-chain information for a + group. + description: groups are the groups info with the provided group member. pagination: description: pagination defines the pagination in the response. type: object @@ -40123,9 +58110,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -40134,236 +58122,598 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: + description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type. + cosmos.group.v1.QueryProposalResponse: type: object properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: + proposal: + description: proposal is the proposal info. + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique id of the proposal. + group_policy_address: + type: string + description: group_policy_address is the account address of group policy. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the proposal. + proposers: + type: array + items: type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + description: proposers are the account addresses of the proposers. + submit_time: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal was + submitted. + group_version: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at proposal + submission. - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorAccumulatedCommission represents accumulated commission - for a validator kept as a running counter, can be withdrawn at any time. - cosmos.distribution.v1beta1.ValidatorOutstandingRewards: + This field is here for informational purposes only. + group_policy_version: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group policy at + proposal submission. + + When a decision policy is changed, existing proposals from + previous policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of the + proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result contains the sums of all weighted votes for + this + + proposal for each vote option. It is empty at submission, and only + + populated after tallying, at voting period end or at proposal + execution, + + whichever happens first. + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + voting_period_end: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting must be + done. + + Unless a successfull MsgExec is called before (to execute a + proposal whose + + tally is successful before the voting period ends), tallying will + be done + + at this point, and the `final_tally_result`and `status` fields + will be + + accordingly updated. + executor_result: + description: >- + executor_result is the final result of the proposal execution. + Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if the + proposal passes. + description: QueryProposalResponse is the Query/Proposal response type. + cosmos.group.v1.QueryProposalsByGroupPolicyResponse: type: object properties: - rewards: + proposals: type: array items: type: object properties: - denom: + id: type: string - amount: + format: uint64 + description: id is the unique id of the proposal. + group_policy_address: type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards - for a validator inexpensive to track, allows simple sanity checks. - cosmos.distribution.v1beta1.ValidatorSlashEvent: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse: - type: object - properties: - hash: - type: string - format: byte - description: hash defines the hash of the evidence. - description: MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type. - cosmos.evidence.v1beta1.QueryAllEvidenceResponse: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - '@type': + description: group_policy_address is the account address of group policy. + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the proposal. + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submit_time: type: string + format: date-time description: >- - A URL/resource name that uniquely identifies the type of the - serialized + submit_time is a timestamp specifying when a proposal was + submitted. + group_version: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at proposal + submission. - protocol buffer message. This string must contain at least + This field is here for informational purposes only. + group_policy_version: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group policy at + proposal submission. - one "/" character. The last segment of the URL's path must - represent + When a decision policy is changed, existing proposals from + previous policy - the fully qualified name of the type (as in + versions will become invalid with the `ABORTED` status. - `path/google.protobuf.Duration`). The name should be in a - canonical form + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of + the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result contains the sums of all weighted votes for + this - (e.g., leading "." is not accepted). + proposal for each vote option. It is empty at submission, and + only + populated after tallying, at voting period end or at proposal + execution, - In practice, teams usually precompile into the binary all types - that they + whichever happens first. + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + voting_period_end: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting must be + done. - expect it to use in the context of Any. However, for URLs which - use the + Unless a successfull MsgExec is called before (to execute a + proposal whose - scheme `http`, `https`, or no scheme, one can optionally set up - a type + tally is successful before the voting period ends), tallying + will be done - server that maps type URLs to message definitions as follows: + at this point, and the `final_tally_result`and `status` fields + will be + accordingly updated. + executor_result: + description: >- + executor_result is the final result of the proposal execution. + Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - * If no scheme is provided, `https` is assumed. + protocol buffer message. This string must contain at least - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + one "/" character. The last segment of the URL's path must + represent - Note: this functionality is not currently available in the - official + the fully qualified name of the type (as in - protobuf release, and it is not used for type URLs beginning - with + `path/google.protobuf.Duration`). The name should be in a + canonical form - type.googleapis.com. + (e.g., leading "." is not accepted). - Schemes other than `http`, `https` (or the empty scheme) might - be + In practice, teams usually precompile into the binary all + types that they - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + expect it to use in the context of Any. However, for URLs + which use the - URL that describes the type of the serialized message. + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any - type. + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Example 1: Pack and unpack a message in C++. + Note: this functionality is not currently available in the + official - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + protobuf release, and it is not used for type URLs + beginning with - Example 2: Pack and unpack a message in Java. + type.googleapis.com. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Schemes other than `http`, `https` (or the empty scheme) + might be - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - Example 4: Pack and unpack a message in Go + URL that describes the type of the serialized message. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + Protobuf library provides support to pack/unpack Any values in + the form - 'type.googleapis.com/full.type.name' as the type URL and the unpack + of utility functions or additional generated methods of the + Any type. - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Example 1: Pack and unpack a message in C++. - name "y.z". + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - JSON + Example 3: Pack and unpack a message in Python. - ==== + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - The JSON representation of an `Any` value uses the regular + Example 4: Pack and unpack a message in Go - representation of the deserialized, embedded message, with an + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - additional field `@type` which contains the type URL. Example: + The pack methods provided by protobuf library will by default + use - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + methods only use the fully qualified type name after the last + '/' - If the embedded message type is well-known and has a custom JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - representation, that representation will be embedded adding a field + name "y.z". - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if the + proposal passes. + description: >- + Proposal defines a group proposal. Any member of a group can submit + a proposal + + for a group policy to decide upon. + + A proposal consists of a set of `sdk.Msg`s that will be executed if + the proposal + + passes as well as some optional metadata associated with the + proposal. + description: proposals are the proposals with given group policy. pagination: description: pagination defines the pagination in the response. type: object @@ -40371,9 +58721,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -40383,14 +58734,330 @@ definitions: was set, its value is undefined otherwise description: >- - QueryAllEvidenceResponse is the response type for the Query/AllEvidence - RPC + QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy + response type. + cosmos.group.v1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + description: QueryTallyResultResponse is the Query/TallyResult response type. + cosmos.group.v1.QueryVoteByProposalVoterResponse: + type: object + properties: + vote: + description: vote is the vote with given proposal_id and voter. + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + submit_time: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + description: >- + QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response + type. + cosmos.group.v1.QueryVotesByProposalResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + submit_time: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + description: Vote represents a vote for a proposal. + description: votes are the list of votes for given proposal_id. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesByProposalResponse is the Query/VotesByProposal response type. + cosmos.group.v1.QueryVotesByVoterResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + submit_time: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + description: Vote represents a vote for a proposal. + description: votes are the list of votes by given voter. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. + cosmos.group.v1.TallyResult: + type: object + properties: + yes_count: + type: string + description: yes_count is the weighted sum of yes votes. + abstain_count: + type: string + description: abstain_count is the weighted sum of abstainers. + no_count: + type: string + description: no_count is the weighted sum of no votes. + no_with_veto_count: + type: string + description: no_with_veto_count is the weighted sum of veto. + description: TallyResult represents the sum of weighted votes for each vote option. + cosmos.group.v1.Vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + description: metadata is any arbitrary metadata to attached to the vote. + submit_time: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + description: Vote represents a vote for a proposal. + cosmos.group.v1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: |- + VoteOption enumerates the valid vote options for a given proposal. + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will + return an error. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.mint.v1beta1.Params: + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + description: Params holds parameters for the mint module. + cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: + type: object + properties: + annual_provisions: + type: string + format: byte + description: annual_provisions is the current minting annual provisions value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. + cosmos.mint.v1beta1.QueryInflationResponse: + type: object + properties: + inflation: + type: string + format: byte + description: inflation is the current minting inflation value. + description: |- + QueryInflationResponse is the response type for the Query/Inflation RPC method. - cosmos.evidence.v1beta1.QueryEvidenceResponse: + cosmos.mint.v1beta1.QueryParamsResponse: type: object properties: - evidence: + params: + description: params defines the parameters of the module. + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.nft.v1beta1.Class: + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT classification, similar to + the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: description is a brief description of nft classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define schema for + Class and NFT `Data` attributes. Optional + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: type: object properties: '@type': @@ -40547,24 +59214,29 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence RPC - method. - cosmos.feegrant.v1beta1.Grant: + title: data is the app specific metadata of the NFT class. Optional + description: Class defines the class of the nft type. + cosmos.nft.v1beta1.MsgSendResponse: + type: object + description: MsgSendResponse defines the Msg/Send response type. + cosmos.nft.v1beta1.NFT: type: object properties: - granter: + class_id: type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: + title: >- + class_id associated with the NFT, similar to the contract address of + ERC721 + id: type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: type: object properties: '@type': @@ -40620,36 +59292,147 @@ definitions: used with implementation specific semantics. additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse: - type: object - description: >- - MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response - type. - cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse: + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is an app specific data of the NFT. Optional + description: NFT defines the NFT. + cosmos.nft.v1beta1.QueryBalanceResponse: type: object - description: >- - MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse - response type. - cosmos.feegrant.v1beta1.QueryAllowanceResponse: + properties: + amount: + type: string + format: uint64 + title: QueryBalanceResponse is the response type for the Query/Balance RPC method + cosmos.nft.v1beta1.QueryClassResponse: type: object properties: - allowance: - description: allowance is a allowance granted for grantee by granter. + class: type: object properties: - granter: + id: type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: + title: >- + id defines the unique identifier of the NFT classification, + similar to the contract address of ERC721 + name: type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: description is a brief description of nft classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define schema + for Class and NFT `Data` attributes. Optional + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: type: object properties: '@type': @@ -40708,614 +59491,326 @@ definitions: used with implementation specific semantics. additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: >- - QueryAllowanceResponse is the response type for the Query/Allowance RPC - method. - cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - server that maps type URLs to message definitions as - follows: + URL that describes the type of the serialized message. - * If no scheme is provided, `https` is assumed. + Protobuf library provides support to pack/unpack Any values in the + form - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + of utility functions or additional generated methods of the Any + type. - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning - with + Example 1: Pack and unpack a message in C++. - type.googleapis.com. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Schemes other than `http`, `https` (or the empty scheme) - might be + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: allowances that have been issued by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + Example 3: Pack and unpack a message in Python. - was set, its value is undefined otherwise - description: >- - QueryAllowancesByGranterResponse is the response type for the - Query/AllowancesByGranter RPC method. - cosmos.feegrant.v1beta1.QueryAllowancesResponse: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - protocol buffer message. This string must contain at least + Example 4: Pack and unpack a message in Go - one "/" character. The last segment of the URL's path must - represent + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - the fully qualified name of the type (as in + The pack methods provided by protobuf library will by default use - `path/google.protobuf.Duration`). The name should be in a - canonical form + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - (e.g., leading "." is not accepted). + methods only use the fully qualified type name after the last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type - In practice, teams usually precompile into the binary all - types that they + name "y.z". - expect it to use in the context of Any. However, for URLs - which use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type - server that maps type URLs to message definitions as - follows: + JSON + ==== - * If no scheme is provided, `https` is assumed. + The JSON representation of an `Any` value uses the regular - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + representation of the deserialized, embedded message, with an - Note: this functionality is not currently available in the - official + additional field `@type` which contains the type URL. Example: - protobuf release, and it is not used for type URLs beginning - with + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - type.googleapis.com. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom JSON - Schemes other than `http`, `https` (or the empty scheme) - might be + representation, that representation will be embedded adding a + field - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + `value` which holds the custom JSON in addition to the `@type` - was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the Query/Allowances RPC - method. - cosmos.gov.v1beta1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + field. Example (for message [google.protobuf.Duration][]): - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1beta1.DepositParams: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is the app specific metadata of the NFT class. Optional + description: Class defines the class of the nft type. + title: QueryClassResponse is the response type for the Query/Class RPC method + cosmos.nft.v1beta1.QueryClassesResponse: type: object properties: - min_deposit: + classes: type: array items: type: object properties: - denom: - type: string - amount: + id: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1beta1.MsgDepositResponse: - type: object - description: MsgDepositResponse defines the Msg/Deposit response type. - cosmos.gov.v1beta1.MsgSubmitProposalResponse: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. - cosmos.gov.v1beta1.MsgVoteResponse: - type: object - description: MsgVoteResponse defines the Msg/Vote response type. - cosmos.gov.v1beta1.MsgVoteWeightedResponse: - type: object - description: |- - MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. - - Since: cosmos-sdk 0.43 - cosmos.gov.v1beta1.Proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: + title: >- + id defines the unique identifier of the NFT classification, + similar to the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: >- + description is a brief description of nft classification. + Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define + schema for Class and NFT `Data` attributes. Optional + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + protocol buffer message. This string must contain at least - * If no scheme is provided, `https` is assumed. + one "/" character. The last segment of the URL's path must + represent - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + the fully qualified name of the type (as in - Note: this functionality is not currently available in the - official + `path/google.protobuf.Duration`). The name should be in a + canonical form - protobuf release, and it is not used for type URLs beginning with + (e.g., leading "." is not accepted). - type.googleapis.com. + In practice, teams usually precompile into the binary all + types that they - Schemes other than `http`, `https` (or the empty scheme) might be + expect it to use in the context of Any. However, for URLs + which use the - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + scheme `http`, `https`, or no scheme, one can optionally set + up a type - URL that describes the type of the serialized message. + server that maps type URLs to message definitions as + follows: - Protobuf library provides support to pack/unpack Any values in the - form + * If no scheme is provided, `https` is assumed. - of utility functions or additional generated methods of the Any type. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in the + official - Example 1: Pack and unpack a message in C++. + protobuf release, and it is not used for type URLs beginning + with - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + type.googleapis.com. - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Schemes other than `http`, `https` (or the empty scheme) + might be - Example 3: Pack and unpack a message in Python. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + URL that describes the type of the serialized message. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Protobuf library provides support to pack/unpack Any values in + the form - The pack methods provided by protobuf library will by default use + of utility functions or additional generated methods of the Any + type. - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + Example 1: Pack and unpack a message in C++. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - name "y.z". + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + Example 3: Pack and unpack a message in Python. - JSON + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - ==== + Example 4: Pack and unpack a message in Go - The JSON representation of an `Any` value uses the regular + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - representation of the deserialized, embedded message, with an + The pack methods provided by protobuf library will by default + use - additional field `@type` which contains the type URL. Example: + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + methods only use the fully qualified type name after the last + '/' - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + in the type URL, for example "foo.bar.com/x/y.z" will yield type - If the embedded message type is well-known and has a custom JSON + name "y.z". - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + JSON - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. + ==== - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + The JSON representation of an `Any` value uses the regular - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1beta1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. + representation of the deserialized, embedded message, with an - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1beta1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - NOTE: The amount field is an Int which implements the custom - method + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1beta1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + If the embedded message type is well-known and has a custom JSON + representation, that representation will be embedded adding a + field - NOTE: The amount field is an Int which implements the custom - method + `value` which holds the custom JSON in addition to the `@type` - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to an - active + field. Example (for message [google.protobuf.Duration][]): - proposal. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is the app specific metadata of the NFT class. Optional + description: Class defines the class of the nft type. pagination: - description: pagination defines the pagination in the response. type: object properties: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -41324,82 +59819,36 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1beta1.QueryParamsResponse: + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryClassesResponse is the response type for the Query/Classes RPC method + cosmos.nft.v1beta1.QueryNFTResponse: type: object properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. + nft: type: object properties: - quorum: + class_id: type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: + title: >- + class_id associated with the NFT, similar to the contract address + of ERC721 + id: type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: + title: id is a unique identifier of the NFT + uri: type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1beta1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - proposal_id: + title: uri for the NFT metadata stored off chain + uri_hash: type: string - format: uint64 - content: + title: uri_hash is a hash of the document pointed by uri + data: type: object properties: '@type': @@ -41562,87 +60011,32 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1beta1.QueryProposalsResponse: + title: data is an app specific data of the NFT. Optional + description: NFT defines the NFT. + title: QueryNFTResponse is the response type for the Query/NFT RPC method + cosmos.nft.v1beta1.QueryNFTsResponse: type: object properties: - proposals: + nfts: type: array items: type: object properties: - proposal_id: + class_id: type: string - format: uint64 - content: + title: >- + class_id associated with the NFT, similar to the contract + address of ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uri_hash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: type: object properties: '@type': @@ -41809,247 +60203,18 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. + title: data is an app specific data of the NFT. Optional + description: NFT defines the NFT. pagination: - description: pagination defines the pagination in the response. type: object properties: next_key: type: string format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1beta1.QueryTallyResultResponse: - type: object - properties: - tally: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1beta1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1beta1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set - in queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -42058,221 +60223,28 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1beta1.TallyParams: - type: object - properties: - quorum: - type: string - format: byte description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - format: byte - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1beta1.TallyResult: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1beta1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. In - all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1beta1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1beta1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1beta1.WeightedVoteOption: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryNFTsResponse is the response type for the Query/NFTs RPC methods + cosmos.nft.v1beta1.QueryOwnerResponse: type: object properties: - option: + owner: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - cosmos.mint.v1beta1.Params: + title: QueryOwnerResponse is the response type for the Query/Owner RPC method + cosmos.nft.v1beta1.QuerySupplyResponse: type: object properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: + amount: type: string format: uint64 - title: expected blocks per year - description: Params holds parameters for the mint module. - cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: - type: object - properties: - annual_provisions: - type: string - format: byte - description: annual_provisions is the current minting annual provisions value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - cosmos.mint.v1beta1.QueryInflationResponse: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: |- - QueryInflationResponse is the response type for the Query/Inflation RPC - method. - cosmos.mint.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: QueryParamsResponse is the response type for the Query/Params RPC method. + title: QuerySupplyResponse is the response type for the Query/Supply RPC method cosmos.params.v1beta1.ParamChange: type: object properties: @@ -42299,6 +60271,47 @@ definitions: value: type: string description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.params.v1beta1.QuerySubspacesResponse: + type: object + properties: + subspaces: + type: array + items: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: >- + Subspace defines a parameter subspace name and all the keys that + exist for + + the subspace. + + + Since: cosmos-sdk 0.46 + description: |- + QuerySubspacesResponse defines the response types for querying for all + registered subspaces and all keys for a subspace. + + Since: cosmos-sdk 0.46 + cosmos.params.v1beta1.Subspace: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: |- + Subspace defines a parameter subspace name and all the keys that exist for + the subspace. + + Since: cosmos-sdk 0.46 cosmos.slashing.v1beta1.MsgUnjailResponse: type: object title: MsgUnjailResponse defines the Msg/Unjail response type @@ -42457,9 +60470,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -43012,6 +61026,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -43050,6 +61067,10 @@ definitions: type: string format: date-time description: MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. + cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse: + type: object + description: 'Since: cosmos-sdk 0.46' + title: MsgCancelUnbondingDelegationResponse cosmos.staking.v1beta1.MsgCreateValidatorResponse: type: object description: MsgCreateValidatorResponse defines the Msg/CreateValidator response type. @@ -43089,6 +61110,11 @@ definitions: bond_denom: type: string description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission rate that a + validator can charge their delegators description: Params defines the parameters for the staking module. cosmos.staking.v1beta1.Pool: type: object @@ -43215,9 +61241,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -43286,9 +61313,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -43565,6 +61593,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -43862,6 +61893,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -43883,7 +61917,7 @@ definitions: exchange rate. Voting power can be calculated as total bonded shares multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. + description: validators defines the validators' info of a delegator. pagination: description: pagination defines the pagination in the response. type: object @@ -43891,9 +61925,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -44265,6 +62300,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -44320,6 +62358,11 @@ definitions: bond_denom: type: string description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission rate that + a validator can charge their delegators description: QueryParamsResponse is response type for the Query/Params RPC method. cosmos.staking.v1beta1.QueryPoolResponse: type: object @@ -44454,9 +62497,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -44575,9 +62619,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -44854,6 +62899,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -44933,9 +62981,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -45220,6 +63269,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -45249,9 +63301,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -45792,6 +63845,9 @@ definitions: description: >- min_self_delegation is the validator's self declared minimum self delegation. + + + Since: cosmos-sdk 0.46 description: >- Validator defines a validator, together with the total amount of the @@ -45884,6 +63940,11 @@ definitions: length prefixed in order to separate data from multiple message executions. + + Deprecated. This field is still populated, but prefer msg_response + instead + + because it also contains the Msg response typeURL. log: type: string description: Log contains the log information from message or handler execution. @@ -45923,6 +63984,172 @@ definitions: message or handler execution. + msg_responses: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: |- + msg_responses contains the Msg handler responses type packed in Anys. + + Since: cosmos-sdk 0.46 description: Result is the union of ResponseFormat and ResponseCheckTx. cosmos.base.abci.v1beta1.StringEvent: type: object @@ -46232,7 +64459,7 @@ definitions: these events include those emitted by processing all the messages and those - emitted from the ante handler. Whereas Logs contains the events, with + emitted from the ante. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. @@ -46263,21 +64490,35 @@ definitions: - SIGN_MODE_UNSPECIFIED - SIGN_MODE_DIRECT - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX - SIGN_MODE_LEGACY_AMINO_JSON - SIGN_MODE_EIP_191 default: SIGN_MODE_UNSPECIFIED description: |- SignMode represents a signing mode with its own security guarantees. + This enum should be considered a registry of all known sign modes + in the Cosmos ecosystem. Apps are not expected to support all known + sign modes. Apps that would like to support custom sign modes are + encouraged to open a small PR against this file to add a new case + to this SignMode enum describing their sign mode so that different + apps have a consistent version of this enum. + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected + rejected. - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx + verified with raw bytes from Tx. - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT + from SIGN_MODE_DIRECT. It is currently not supported. + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not + require signers signing over other signers' `signer_info`. It also allows + for adding Tips in transactions. + + Since: cosmos-sdk 0.46 - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future + Amino JSON and will be removed in the future. - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 @@ -46366,6 +64607,42 @@ definitions: appropriate fee grant does not exist or the chain does not support fee grants, this will fail + tip: + description: >- + Tip is the optional tip used for transactions fees paid in another + denom. + + + This field is ignored if the chain didn't enable tips, i.e. didn't add + the + + `TipDecorator` in its posthandler. + + + Since: cosmos-sdk 0.46 + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip description: |- AuthInfo describes the fee and signer modes that are used to sign a transaction. @@ -46715,8 +64992,7 @@ definitions: these events include those emitted by processing all the messages and those - emitted from the ante handler. Whereas Logs contains the events, - with + emitted from the ante. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. @@ -47344,9 +65620,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -47662,8 +65939,7 @@ definitions: these events include those emitted by processing all the messages and those - emitted from the ante handler. Whereas Logs contains the events, - with + emitted from the ante. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. @@ -47984,8 +66260,7 @@ definitions: these events include those emitted by processing all the messages and those - emitted from the ante handler. Whereas Logs contains the events, - with + emitted from the ante. Whereas Logs contains the events, with additional metadata, emitted only by processing the messages. @@ -47998,15 +66273,18 @@ definitions: tags are stringified and the log is JSON decoded. description: tx_responses is the list of queried TxResponses. pagination: - description: pagination defines a pagination for the response. + description: |- + pagination defines a pagination for the response. + Deprecated post v0.46.x: use total instead. type: object properties: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -48015,6 +66293,10 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise + total: + type: string + format: uint64 + title: total is total number of results available description: |- GetTxsEventResponse is the response type for the Service.TxsByEvents RPC method. @@ -48032,6 +66314,7 @@ definitions: - SIGN_MODE_UNSPECIFIED - SIGN_MODE_DIRECT - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX - SIGN_MODE_LEGACY_AMINO_JSON - SIGN_MODE_EIP_191 default: SIGN_MODE_UNSPECIFIED @@ -48039,17 +66322,42 @@ definitions: SignMode represents a signing mode with its own security guarantees. + + This enum should be considered a registry of all known sign modes + + in the Cosmos ecosystem. Apps are not expected to support all + known + + sign modes. Apps that would like to support custom sign modes are + + encouraged to open a small PR against this file to add a new case + + to this SignMode enum describing their sign mode so that different + + apps have a consistent version of this enum. + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected + rejected. - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx + verified with raw bytes from Tx. - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT + from SIGN_MODE_DIRECT. It is currently not supported. + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode + does not + + require signers signing over other signers' `signer_info`. It also + allows + + for adding Tips in transactions. + + + Since: cosmos-sdk 0.46 - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future + Amino JSON and will be removed in the future. - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 @@ -48112,23 +66420,48 @@ definitions: - SIGN_MODE_UNSPECIFIED - SIGN_MODE_DIRECT - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX - SIGN_MODE_LEGACY_AMINO_JSON - SIGN_MODE_EIP_191 default: SIGN_MODE_UNSPECIFIED description: >- SignMode represents a signing mode with its own security guarantees. + + This enum should be considered a registry of all known sign modes + + in the Cosmos ecosystem. Apps are not expected to support all known + + sign modes. Apps that would like to support custom sign modes are + + encouraged to open a small PR against this file to add a new case + + to this SignMode enum describing their sign mode so that different + + apps have a consistent version of this enum. + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected + rejected. - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx + verified with raw bytes from Tx. - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT + from SIGN_MODE_DIRECT. It is currently not supported. + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does + not + + require signers signing over other signers' `signer_info`. It also + allows + + for adding Tips in transactions. + + + Since: cosmos-sdk 0.46 - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future + Amino JSON and will be removed in the future. - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 @@ -48389,6 +66722,11 @@ definitions: length prefixed in order to separate data from multiple message executions. + + Deprecated. This field is still populated, but prefer msg_response + instead + + because it also contains the Msg response typeURL. log: type: string description: >- @@ -48421,18 +66759,218 @@ definitions: Event allows application developers to attach additional information to - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and + ResponseDeliverTx. + + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message + + or handler execution. + msg_responses: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== - Later, transactions may be queried using these events. + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } description: >- - Events contains a slice of Event objects that were emitted during - message + msg_responses contains the Msg handler responses type packed in + Anys. - or handler execution. + + Since: cosmos-sdk 0.46 description: |- SimulateResponse is the response type for the Service.SimulateRPC method. + cosmos.tx.v1beta1.Tip: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip + description: |- + Tip is the tip used for meta-transactions. + + Since: cosmos-sdk 0.46 cosmos.tx.v1beta1.Tx: type: object properties: @@ -49320,966 +67858,349 @@ definitions: Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - tendermint.abci.Event: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - description: >- - Event allows application developers to attach additional information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - tendermint.abci.EventAttribute: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - cosmos.upgrade.v1beta1.ModuleVersion: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.Plan: - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the upgraded - - version of the software to apply any special "on-upgrade" commands - during - - the first BeginBlock method after the upgrade is applied. It is also - used - - to detect whether a software version can handle a given upgrade. If no - - upgrade handler with this name has been set in the software, it will - be - - assumed that the software is out-of-date when the upgrade Time or - Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic - - has been removed from the SDK. - - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: |- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - ==== + The pack methods provided by protobuf library will by default use - The JSON representation of an `Any` value uses the regular + 'type.googleapis.com/full.type.name' as the type URL and the unpack - representation of the deserialized, embedded message, with an + methods only use the fully qualified type name after the last '/' - additional field `@type` which contains the type URL. Example: + in the type URL, for example "foo.bar.com/x/y.z" will yield type - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + name "y.z". - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + JSON - `value` which holds the custom JSON in addition to the `@type` + ==== - field. Example (for message [google.protobuf.Duration][]): + The JSON representation of an `Any` value uses the regular - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - Plan specifies information about a planned upgrade and when it should - occur. - cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: - type: object - properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the Query/AppliedPlan - RPC + representation of the deserialized, embedded message, with an - method. - cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: - type: object - properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the - upgraded + additional field `@type` which contains the type URL. Example: - version of the software to apply any special "on-upgrade" commands - during + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - the first BeginBlock method after the upgrade is applied. It is - also used + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - to detect whether a software version can handle a given upgrade. - If no + If the embedded message type is well-known and has a custom JSON - upgrade handler with this name has been set in the software, it - will be + representation, that representation will be embedded adding a field - assumed that the software is out-of-date when the upgrade Time or - Height is + `value` which holds the custom JSON in addition to the `@type` - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic + field. Example (for message [google.protobuf.Duration][]): - has been removed from the SDK. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included on-chain + when the default options are not sufficient. If any of these are + present - such as a git commit that validators could automatically upgrade - to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + and can't be handled, the transaction will be rejected + non_critical_extension_options: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all - types that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs - which use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + scheme `http`, `https`, or no scheme, one can optionally set up + a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might - be + Schemes other than `http`, `https` (or the empty scheme) might + be - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any - type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if (any.UnpackTo(&foo)) { - ... - } + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryCurrentPlanResponse is the response type for the Query/CurrentPlan - RPC + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains - method. - cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: + when the default options are not sufficient. If any of these are + present + + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + tendermint.abci.Event: type: object properties: - module_versions: + type: + type: string + attributes: type: array items: type: object properties: - name: + key: type: string - title: name of the app module - version: + format: byte + value: type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 - description: >- - module_versions is a list of module names with their consensus - versions. + format: byte + index: + type: boolean + description: 'EventAttribute is a single key-value pair, associated with an event.' description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions - - RPC method. + Event allows application developers to attach additional information to + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and + ResponseDeliverTx. - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: + Later, transactions may be queried using these events. + tendermint.abci.EventAttribute: type: object properties: - upgraded_consensus_state: + key: type: string format: byte - title: 'Since: cosmos-sdk 0.43' - description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState - - RPC method. - cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse: - type: object - description: >- - MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount - response type. - cosmwasm.wasm.v1.AbsoluteTxPosition: + value: + type: string + format: byte + index: + type: boolean + description: 'EventAttribute is a single key-value pair, associated with an event.' + cosmos.upgrade.v1beta1.ModuleVersion: type: object properties: - block_height: + name: type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: + title: name of the app module + version: type: string format: uint64 - title: >- - TxIndex is a monotonic counter within the block (actual transaction - index, - - or gas consumed) + title: consensus version of the app module description: |- - AbsoluteTxPosition is a unique transaction position that allows for global - ordering of transactions. - cosmwasm.wasm.v1.AccessConfig: + ModuleVersion specifies a module and its consensus version. + + Since: cosmos-sdk 0.43 + cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse: type: object - properties: - permission: - type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED - description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified placeholder for empty - value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - cosmwasm.wasm.v1.AccessType: - type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED - description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified placeholder for empty - value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - cosmwasm.wasm.v1.CodeInfoResponse: + description: |- + MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type. + + Since: cosmos-sdk 0.46 + cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse: type: object - properties: - code_id: - type: string - format: uint64 - creator: - type: string - data_hash: - type: string - format: byte - instantiate_permission: - type: object - properties: - permission: - type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED - description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified placeholder for - empty value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - title: CodeInfoResponse contains code meta data from CodeInfo - cosmwasm.wasm.v1.ContractCodeHistoryEntry: + description: |- + MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type. + + Since: cosmos-sdk 0.46 + cosmos.upgrade.v1beta1.Plan: type: object properties: - operation: + name: type: string - enum: - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS - default: CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED description: >- - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED: - ContractCodeHistoryOperationTypeUnspecified placeholder for empty - value - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT: ContractCodeHistoryOperationTypeInit on chain contract instantiation - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE: ContractCodeHistoryOperationTypeMigrate code migration - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS: ContractCodeHistoryOperationTypeGenesis based on genesis data - title: ContractCodeHistoryOperationType actions that caused a code change - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored WASM code - updated: - description: Updated Tx position when the operation was executed. - type: object - properties: - block_height: - type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: - type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block (actual - transaction index, + Sets the name for the upgrade. This name will be used by the upgraded - or gas consumed) - msg: - type: string - format: byte - description: ContractCodeHistoryEntry metadata to a contract. - cosmwasm.wasm.v1.ContractCodeHistoryOperationType: - type: string - enum: - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS - default: CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - description: >- - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED: - ContractCodeHistoryOperationTypeUnspecified placeholder for empty value - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT: ContractCodeHistoryOperationTypeInit on chain contract instantiation - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE: ContractCodeHistoryOperationTypeMigrate code migration - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS: ContractCodeHistoryOperationTypeGenesis based on genesis data - title: ContractCodeHistoryOperationType actions that caused a code change - cosmwasm.wasm.v1.ContractInfo: - type: object - properties: - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored Wasm code - creator: - type: string - title: Creator address who initially instantiated the contract - admin: - type: string - title: Admin is an optional address that can execute migrations - label: - type: string - description: Label is optional metadata to be stored with a contract instance. - created: - title: >- - Created Tx position when the contract was instantiated. + version of the software to apply any special "on-upgrade" commands + during - This data should kept internal and not be exposed via query results. - Just + the first BeginBlock method after the upgrade is applied. It is also + used - use for sorting - type: object - properties: - block_height: - type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: - type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block (actual - transaction index, + to detect whether a software version can handle a given upgrade. If no + + upgrade handler with this name has been set in the software, it will + be + + assumed that the software is out-of-date when the upgrade Time or + Height is - or gas consumed) + reached and the software will exit. + time: + type: string + format: date-time description: >- - AbsoluteTxPosition is a unique transaction position that allows for - global + Deprecated: Time based upgrades have been deprecated. Time based + upgrade logic + + has been removed from the SDK. - ordering of transactions. - ibc_port_id: + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: type: string - extension: + title: |- + Any application specific upgrade info to be included on-chain + such as a git commit that validators could automatically upgrade to + upgraded_client_state: type: object properties: '@type': @@ -50436,320 +68357,81 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: ContractInfo stores a WASM contract instance - cosmwasm.wasm.v1.Model: - type: object - properties: - key: - type: string - format: byte - title: hex-encode key to read it better (this is often ascii) - value: - type: string - format: byte - title: base64-encode raw value - title: Model is a struct that holds a KV pair - cosmwasm.wasm.v1.MsgClearAdminResponse: - type: object - title: MsgClearAdminResponse returns empty data - cosmwasm.wasm.v1.MsgExecuteContractResponse: - type: object - properties: - data: - type: string - format: byte - title: Data contains base64-encoded bytes to returned from the contract - description: MsgExecuteContractResponse returns execution result data. - cosmwasm.wasm.v1.MsgInstantiateContractResponse: - type: object - properties: - address: - type: string - description: Address is the bech32 address of the new contract instance. - data: - type: string - format: byte - title: Data contains base64-encoded bytes to returned from the contract - title: MsgInstantiateContractResponse return instantiation result data - cosmwasm.wasm.v1.MsgMigrateContractResponse: - type: object - properties: - data: - type: string - format: byte - title: |- - Data contains same raw bytes returned as data from the wasm contract. - (May be empty) - description: MsgMigrateContractResponse returns contract migration result data. - cosmwasm.wasm.v1.MsgStoreCodeResponse: + description: >- + Plan specifies information about a planned upgrade and when it should + occur. + cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: type: object properties: - code_id: + height: type: string - format: uint64 - title: CodeID is the reference to the stored WASM code - description: MsgStoreCodeResponse returns store result data. - cosmwasm.wasm.v1.MsgUpdateAdminResponse: - type: object - title: MsgUpdateAdminResponse returns empty data - cosmwasm.wasm.v1.QueryAllContractStateResponse: - type: object - properties: - models: - type: array - items: - type: object - properties: - key: - type: string - format: byte - title: hex-encode key to read it better (this is often ascii) - value: - type: string - format: byte - title: base64-encode raw value - title: Model is a struct that holds a KV pair - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + format: int64 + description: height is the block height at which the plan was applied. + description: >- + QueryAppliedPlanResponse is the response type for the Query/AppliedPlan + RPC - was set, its value is undefined otherwise - title: |- - QueryAllContractStateResponse is the response type for the - Query/AllContractState RPC method - cosmwasm.wasm.v1.QueryCodeResponse: + method. + cosmos.upgrade.v1beta1.QueryAuthorityResponse: type: object properties: - code_info: - type: object - properties: - code_id: - type: string - format: uint64 - creator: - type: string - data_hash: - type: string - format: byte - instantiate_permission: - type: object - properties: - permission: - type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED - description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified placeholder - for empty value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - title: CodeInfoResponse contains code meta data from CodeInfo - data: + address: type: string - format: byte - title: QueryCodeResponse is the response type for the Query/Code RPC method - cosmwasm.wasm.v1.QueryCodesResponse: + description: 'Since: cosmos-sdk 0.46' + title: QueryAuthorityResponse is the response type for Query/Authority + cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: type: object properties: - code_infos: - type: array - items: - type: object - properties: - code_id: - type: string - format: uint64 - creator: - type: string - data_hash: - type: string - format: byte - instantiate_permission: - type: object - properties: - permission: - type: string - enum: - - ACCESS_TYPE_UNSPECIFIED - - ACCESS_TYPE_NOBODY - - ACCESS_TYPE_ONLY_ADDRESS - - ACCESS_TYPE_EVERYBODY - default: ACCESS_TYPE_UNSPECIFIED - description: >- - - ACCESS_TYPE_UNSPECIFIED: AccessTypeUnspecified placeholder - for empty value - - ACCESS_TYPE_NOBODY: AccessTypeNobody forbidden - - ACCESS_TYPE_ONLY_ADDRESS: AccessTypeOnlyAddress restricted to an address - - ACCESS_TYPE_EVERYBODY: AccessTypeEverybody unrestricted - title: AccessType permission types - address: - type: string - description: AccessConfig access control type. - title: CodeInfoResponse contains code meta data from CodeInfo - pagination: - description: pagination defines the pagination in the response. + plan: + description: plan is the current upgrade plan. type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + name: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + Sets the name for the upgrade. This name will be used by the + upgraded - was set, its value is undefined otherwise - title: QueryCodesResponse is the response type for the Query/Codes RPC method - cosmwasm.wasm.v1.QueryContractHistoryResponse: - type: object - properties: - entries: - type: array - items: - type: object - properties: - operation: - type: string - enum: - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS - default: CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED - description: >- - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED: - ContractCodeHistoryOperationTypeUnspecified placeholder for - empty value - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT: ContractCodeHistoryOperationTypeInit on chain contract instantiation - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE: ContractCodeHistoryOperationTypeMigrate code migration - - CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS: ContractCodeHistoryOperationTypeGenesis based on genesis data - title: >- - ContractCodeHistoryOperationType actions that caused a code - change - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored WASM code - updated: - description: Updated Tx position when the operation was executed. - type: object - properties: - block_height: - type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: - type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block (actual - transaction index, + version of the software to apply any special "on-upgrade" commands + during - or gas consumed) - msg: - type: string - format: byte - description: ContractCodeHistoryEntry metadata to a contract. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + the first BeginBlock method after the upgrade is applied. It is + also used - was set, its value is undefined otherwise - title: |- - QueryContractHistoryResponse is the response type for the - Query/ContractHistory RPC method - cosmwasm.wasm.v1.QueryContractInfoResponse: - type: object - properties: - address: - type: string - title: address is the address of the contract - contract_info: - type: object - properties: - code_id: - type: string - format: uint64 - title: CodeID is the reference to the stored Wasm code - creator: - type: string - title: Creator address who initially instantiated the contract - admin: - type: string - title: Admin is an optional address that can execute migrations - label: - type: string - description: Label is optional metadata to be stored with a contract instance. - created: - title: >- - Created Tx position when the contract was instantiated. + to detect whether a software version can handle a given upgrade. + If no - This data should kept internal and not be exposed via query - results. Just + upgrade handler with this name has been set in the software, it + will be - use for sorting - type: object - properties: - block_height: - type: string - format: uint64 - title: BlockHeight is the block the contract was created at - tx_index: - type: string - format: uint64 - title: >- - TxIndex is a monotonic counter within the block (actual - transaction index, + assumed that the software is out-of-date when the upgrade Time or + Height is - or gas consumed) + reached and the software will exit. + time: + type: string + format: date-time description: >- - AbsoluteTxPosition is a unique transaction position that allows - for global + Deprecated: Time based upgrades have been deprecated. Time based + upgrade logic + + has been removed from the SDK. - ordering of transactions. - ibc_port_id: + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: type: string - extension: + title: >- + Any application specific upgrade info to be included on-chain + + such as a git commit that validators could automatically upgrade + to + upgraded_client_state: type: object properties: '@type': @@ -50912,90 +68594,97 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - title: ContractInfo stores a WASM contract instance - title: >- - QueryContractInfoResponse is the response type for the Query/ContractInfo + description: >- + QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC - method - cosmwasm.wasm.v1.QueryContractsByCodeResponse: + method. + cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: type: object properties: - contracts: + module_versions: type: array items: - type: string - title: contracts are a set of contract addresses - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + type: object + properties: + name: + type: string + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + description: |- + ModuleVersion specifies a module and its consensus version. - was set, its value is undefined otherwise - title: |- - QueryContractsByCodeResponse is the response type for the - Query/ContractsByCode RPC method - cosmwasm.wasm.v1.QueryPinnedCodesResponse: - type: object - properties: - code_ids: - type: array - items: - type: string - format: uint64 - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + Since: cosmos-sdk 0.43 + description: >- + module_versions is a list of module names with their consensus + versions. + description: >- + QueryModuleVersionsResponse is the response type for the + Query/ModuleVersions - was set, its value is undefined otherwise - title: |- - QueryPinnedCodesResponse is the response type for the - Query/PinnedCodes RPC method - cosmwasm.wasm.v1.QueryRawContractStateResponse: + RPC method. + + + Since: cosmos-sdk 0.43 + cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: type: object properties: - data: + upgraded_consensus_state: type: string format: byte - title: Data contains the raw store data - title: |- - QueryRawContractStateResponse is the response type for the - Query/RawContractState RPC method - cosmwasm.wasm.v1.QuerySmartContractStateResponse: + title: 'Since: cosmos-sdk 0.43' + description: >- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState + + RPC method. + cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse: + type: object + description: >- + MsgCreateVestingAccountResponse defines the + Msg/CreatePeriodicVestingAccount + + response type. + + + Since: cosmos-sdk 0.46 + cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse: + type: object + description: >- + MsgCreatePermanentLockedAccountResponse defines the + Msg/CreatePermanentLockedAccount response type. + + + Since: cosmos-sdk 0.46 + cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse: + type: object + description: >- + MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount + response type. + cosmos.vesting.v1beta1.Period: type: object properties: - data: + length: type: string - format: byte - title: Data contains the json data returned from the smart contract - title: |- - QuerySmartContractStateResponse is the response type for the - Query/SmartContractState RPC method + format: int64 + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Period defines a length of time and amount of coins that will vest. ibc.applications.interchain_accounts.controller.v1.Params: type: object properties: @@ -51161,9 +68850,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -52188,9 +69878,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -52323,9 +70014,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -52496,9 +70188,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -52630,9 +70323,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -53632,9 +71326,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -53714,9 +71409,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -54160,9 +71856,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -55419,9 +73116,10 @@ definitions: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -55502,17 +73200,3 @@ definitions: description: |- Version defines the versioning scheme used to negotiate the IBC verison in the connection handshake. - intertx.MsgRegisterAccountResponse: - type: object - title: MsgRegisterAccountResponse defines the response for Msg/RegisterAccount - intertx.MsgSubmitTxResponse: - type: object - title: MsgSubmitTxResponse defines the response for Msg/SubmitTx - intertx.QueryInterchainAccountFromAddressResponse: - type: object - properties: - interchain_account_address: - type: string - title: >- - QueryInterchainAccountFromAddressResponse the response type for the - Query/InterchainAccountAddress RPC diff --git a/go.mod b/go.mod index 6ecdaf20..671fe774 100644 --- a/go.mod +++ b/go.mod @@ -3,62 +3,94 @@ module github.com/okp4/okp4d go 1.18 require ( - github.com/CosmWasm/wasmd v0.27.0 - github.com/cosmos/cosmos-sdk v0.45.6 - github.com/cosmos/ibc-go/v3 v3.1.0 - github.com/cosmos/interchain-accounts v0.1.0 - github.com/prometheus/client_golang v1.12.2 - github.com/spf13/cast v1.4.1 - github.com/spf13/cobra v1.4.0 - github.com/tendermint/tendermint v0.34.19 + github.com/cosmos/cosmos-sdk v0.46.1 + github.com/cosmos/ibc-go/v5 v5.0.0-rc1 + github.com/ignite/cli v0.24.0 + github.com/spf13/cast v1.5.0 + github.com/stretchr/testify v1.8.0 + github.com/tendermint/tendermint v0.34.21 github.com/tendermint/tm-db v0.6.7 ) require ( - filippo.io/edwards25519 v1.0.0-beta.2 // indirect - github.com/99designs/keyring v1.1.6 // indirect + cloud.google.com/go v0.102.0 // indirect + cloud.google.com/go/compute v1.7.0 // indirect + cloud.google.com/go/iam v0.3.0 // indirect + cloud.google.com/go/storage v1.22.1 // indirect + cosmossdk.io/errors v1.0.0-beta.7 // indirect + cosmossdk.io/math v1.0.0-beta.3 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.1 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/CosmWasm/wasmvm v1.0.0 // indirect - github.com/DataDog/zstd v1.4.5 // indirect + github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/Microsoft/hcsshim v0.9.3 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/armon/go-metrics v0.3.10 // indirect + github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 // indirect + github.com/armon/go-metrics v0.4.0 // indirect + github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 // indirect + github.com/aws/aws-sdk-go v1.40.45 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/btcsuite/btcd v0.22.0-beta // indirect + github.com/blang/semver v3.5.1+incompatible // indirect + github.com/btcsuite/btcd v0.22.1 // indirect + github.com/buger/jsonparser v1.1.1 // indirect + github.com/cenkalti/backoff v2.2.1+incompatible // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.0 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect github.com/confio/ics23/go v0.7.0 // indirect - github.com/containerd/continuity v0.2.2 // indirect + github.com/containerd/cgroups v1.0.3 // indirect + github.com/containerd/containerd v1.6.6 // indirect github.com/cosmos/btcutil v1.0.4 // indirect + github.com/cosmos/cosmos-proto v1.0.0-alpha7 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.17.3 // indirect + github.com/cosmos/iavl v0.19.1 // indirect github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect github.com/cosmos/ledger-go v0.9.2 // indirect - github.com/danieljoos/wincred v1.0.2 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.2 // indirect - github.com/dgraph-io/ristretto v0.0.3 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.0 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/docker/docker v20.10.17+incompatible // indirect + github.com/docker/go-units v0.4.0 // indirect github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac // indirect - github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/emicklei/proto v1.9.0 // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/ghodss/yaml v1.0.0 // indirect + github.com/go-git/gcfg v1.5.0 // indirect + github.com/go-git/go-billy/v5 v5.0.0 // indirect + github.com/go-git/go-git/v5 v5.1.0 // indirect github.com/go-kit/kit v0.12.0 // indirect - github.com/go-kit/log v0.2.0 // indirect + github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-playground/validator/v10 v10.4.1 // indirect + github.com/goccy/go-yaml v1.9.4 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/gateway v1.1.0 // indirect github.com/gogo/protobuf v1.3.3 // indirect + github.com/golang/glog v1.0.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect - github.com/golang/snappy v0.0.3 // indirect - github.com/google/btree v1.0.0 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.0.1 // indirect github.com/google/go-cmp v0.5.8 // indirect - github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa // indirect + github.com/googleapis/gax-go/v2 v2.4.0 // indirect + github.com/googleapis/go-type-adapters v1.0.0 // indirect + github.com/gookit/color v1.5.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -67,68 +99,105 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.6.1 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect - github.com/improbable-eng/grpc-web v0.14.1 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/iancoleman/strcase v0.2.0 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect - github.com/klauspost/compress v1.13.6 // indirect - github.com/lib/pq v1.10.4 // indirect - github.com/libp2p/go-buffer-pool v0.0.2 // indirect + github.com/jpillora/ansi v1.0.2 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/jpillora/chisel v1.7.7 // indirect + github.com/jpillora/requestlog v1.0.0 // indirect + github.com/jpillora/sizestr v1.0.0 // indirect + github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect + github.com/klauspost/compress v1.15.9 // indirect + github.com/lib/pq v1.10.6 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.6 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-zglob v0.0.3 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/sys/mount v0.3.1 // indirect + github.com/moby/sys/mountinfo v0.6.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/opencontainers/runc v1.1.0 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect - github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect + github.com/opencontainers/runc v1.1.3 // indirect + github.com/otiai10/copy v1.6.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.2 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.12.2 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/common v0.34.0 // indirect github.com/prometheus/procfs v0.7.3 // indirect + github.com/radovskyb/watcher v1.0.7 // indirect github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/rs/cors v1.8.2 // indirect - github.com/rs/zerolog v1.26.1 // indirect + github.com/rs/zerolog v1.27.0 // indirect github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect + github.com/sergi/go-diff v1.2.0 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/cobra v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.11.0 // indirect - github.com/stretchr/testify v1.7.4 // indirect - github.com/subosito/gotenv v1.2.0 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca // indirect + github.com/spf13/viper v1.12.0 // indirect + github.com/subosito/gotenv v1.4.0 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect + github.com/takuoki/gocase v1.0.0 // indirect github.com/tendermint/btcd v0.1.1 // indirect github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/zondax/hid v0.9.0 // indirect + github.com/tendermint/spn v0.2.1-0.20220907161743-aab4d3df1f2b // indirect + github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect + github.com/ulikunitz/xz v0.5.8 // indirect + github.com/xanzy/ssh-agent v0.2.1 // indirect + github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect + github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect - golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect - golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect + go.opencensus.io v0.23.0 // indirect + golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect + golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/net v0.0.0-20220726230323-06994584191e // indirect + golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect + golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect golang.org/x/text v0.3.7 // indirect - google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect - google.golang.org/grpc v1.46.2 // indirect - google.golang.org/protobuf v1.28.0 // indirect - gopkg.in/ini.v1 v1.66.4 // indirect + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect + google.golang.org/api v0.84.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc // indirect + google.golang.org/grpc v1.49.0 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/ini.v1 v1.66.6 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) -replace ( - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 - google.golang.org/grpc => google.golang.org/grpc v1.33.2 -) +replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 diff --git a/go.sum b/go.sum index 69f80e05..a8dcb3e2 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,15 @@ -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -28,16 +31,27 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0 h1:DAq3r8y4mDgyB/ZPJ9v/5VJNqjgJAxTn6ZYLlUywOu8= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -48,116 +62,162 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1 h1:F6IlQJZrZM++apn9V5/VfS3gbTUYg98PS3EMQAzqtfg= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= +cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= +cosmossdk.io/math v1.0.0-beta.3 h1:TbZxSopz2LqjJ7aXYfn7nJSb8vNaBklW6BLpcei1qwM= +cosmossdk.io/math v1.0.0-beta.3/go.mod h1:3LYasri3Zna4XpbrTNdKsWmD5fHHkaNAod/mNT9XdE4= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= -filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= -github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= -github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= +github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CosmWasm/wasmd v0.27.0 h1:GYctl+sqCa8zpDTTUhX0/nf/4ej9J7x/88UmKH9V6Nc= -github.com/CosmWasm/wasmd v0.27.0/go.mod h1:iiHoIuoCjR7kV4cS7PPt4NmyOXv+V9kohRQBsFIreMU= -github.com/CosmWasm/wasmvm v1.0.0 h1:NRmnHe3xXsKn2uEcB1F5Ha323JVAhON+BI6L177dlKc= -github.com/CosmWasm/wasmvm v1.0.0/go.mod h1:ei0xpvomwSdONsxDuONzV7bL1jSET1M8brEx0FCXc+A= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= +github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= +github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= +github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= +github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.9.3 h1:k371PzBuRrz2b+ebGuI2nVgVhgsVX60jMfSw80NECxo= +github.com/Microsoft/hcsshim v0.9.3/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= +github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= -github.com/adlio/schema v1.1.13/go.mod h1:L5Z7tw+7lRK1Fnpi/LT/ooCP1elkXn0krMWBQHUhEDE= -github.com/adlio/schema v1.3.0 h1:eSVYLxYWbm/6ReZBCkLw4Fz7uqC+ZNoPvA39bOwi52A= -github.com/adlio/schema v1.3.0/go.mod h1:51QzxkpeFs6lRY11kPye26IaFPOV+HqEj01t5aXXKfs= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2 h1:axBiC50cNZOs7ygH5BgQp4N+aYrZ2DNpWZ1KG3VOSOM= +github.com/andrew-d/go-termutil v0.0.0-20150726205930-009166a695a2/go.mod h1:jnzFpU88PccN/tPPhCpnNU8mZphvKxYM9lLNkd8e+os= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= +github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= +github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI= github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= -github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= @@ -172,75 +232,189 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= +github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go v0.7.0 h1:lmTO/JEpCvZgpbkOITL95rA80CPKb5CtMzLaqF2mCNg= -github.com/coinbase/rosetta-sdk-go v0.7.0/go.mod h1:7nD3oBPIiHqhRprqvMgPoGxe/nyq3yftRmpsy29coWE= -github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= github.com/confio/ics23/go v0.7.0 h1:00d2kukk7sPoHWL4zZBZwzxnpA2pec1NPdwbSokJ5w8= github.com/confio/ics23/go v0.7.0/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= +github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= +github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.3 h1:ADZftAkglvCiD44c77s5YmMqaP2pzVCFZvBmAlBdAP4= +github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= +github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.2.1/go.mod h1:wCYX+dRqZdImhGucXOqTQn05AhX6EUDaGEMUzTFFpLg= -github.com/containerd/continuity v0.2.2 h1:QSqfxcn8c+12slxwu00AtzXrsami0MJb/MQs9lOLHLA= -github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= +github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= +github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.6.6 h1:xJNPhbrmz8xAMDNoVjHy9YHtWwEQNS+CDkcIRh7t8Y0= +github.com/containerd/containerd v1.6.6/go.mod h1:ZoP1geJldzCVY3Tonoz7b1IXk8rIX0Nltt5QE4OMNk0= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= +github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= +github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= +github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= +github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= +github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= -github.com/cosmos/cosmos-sdk v0.45.6 h1:bnYLOcDp0cKWMLeUTTJIttq6xxRep52ulPxXC3BCfuQ= -github.com/cosmos/cosmos-sdk v0.45.6/go.mod h1:bPeeVMEtVvH3y3xAGHVbK+/CZlpaazzh77hG8ZrcJpI= +github.com/cosmos/cosmos-proto v1.0.0-alpha7 h1:yqYUOHF2jopwZh4dVQp3xgqwftE5/2hkrwIV6vkUbO0= +github.com/cosmos/cosmos-proto v1.0.0-alpha7/go.mod h1:dosO4pSAbJF8zWCzCoTWP7nNsjcvSUBQmniFxDg5daw= +github.com/cosmos/cosmos-sdk v0.46.1 h1:7vUZXMyrmEb4xtBYpz1TobtrcnpgiZTi+tVjc0XWB4o= +github.com/cosmos/cosmos-sdk v0.46.1/go.mod h1:2+o8Qw8qnE02V+lQVZDJFQ8tri/hsiA5GmWaPERqVa0= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.17.3 h1:s2N819a2olOmiauVa0WAhoIJq9EhSXE9HDBAoR9k+8Y= -github.com/cosmos/iavl v0.17.3/go.mod h1:prJoErZFABYZGDHka1R6Oay4z9PrNeFFiMKHDAMOi4w= -github.com/cosmos/ibc-go/v3 v3.1.0 h1:aVPqkrGBluz6t9+d/sLZIG/zQ9O1KJzVeR4UlL/IFTQ= -github.com/cosmos/ibc-go/v3 v3.1.0/go.mod h1:DbOlOa4yKumaHGKApKkJN90L88PCjSD9ZBdAfL9tT40= -github.com/cosmos/interchain-accounts v0.1.0 h1:QmuwNsf1Hxl3P5GSGt7Z+JeuHPiZw4Z34R/038P5T6s= -github.com/cosmos/interchain-accounts v0.1.0/go.mod h1:Fv6LXDs+0ng4mIDVWwEJMXbAIMxY4kiq+A7Bw1Fb9AY= +github.com/cosmos/iavl v0.19.1 h1:3gaq9b6SjiB0KBTygRnAvEGml2pQlu1TH8uma5g63Ys= +github.com/cosmos/iavl v0.19.1/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-go/v5 v5.0.0-rc1 h1:9cgpYmHh2jodB/t3LwB/pYA2sG9rdKB9cmXP0D5M0Fs= +github.com/cosmos/ibc-go/v5 v5.0.0-rc1/go.mod h1:Wqsguq98Iuns8tgTv8+xaGYbC+Q8zJfbpjzT6IgMJbs= github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= @@ -248,106 +422,184 @@ github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9 github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= -github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= +github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= -github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= +github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac h1:opbrjaN/L8gg6Xh5D04Tem+8xVcz6ajZlGCs49mQgyg= github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/proto v1.9.0 h1:l0QiNT6Qs7Yj0Mb4X6dnWBQer4ebei2BFcgQLbGqUDc= +github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= -github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= -github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= +github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM= +github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.0.1 h1:q+IFMfLx200Q3scvt2hN79JsEzy4AmBTp/pqnefH+Bc= +github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= +github.com/go-git/go-git/v5 v5.1.0 h1:HxJn9g/E7eYvKW3Fm7Jt4ee8LXfPOm/H1cdDu8vEssk= +github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -356,35 +608,46 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-yaml v1.9.4 h1:S0GCYjwHKVI6IHqio7QWNKNThUl6NLzFd/g8Z65Axw8= +github.com/goccy/go-yaml v1.9.4/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= +github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= @@ -414,13 +677,15 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -433,16 +698,20 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= @@ -465,28 +734,43 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa h1:7MYGT2XEMam7Mtzv1yDUYXANedWvwk3HKkR3MyGowy8= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ= +github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= -github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= @@ -505,82 +789,115 @@ github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-getter v1.6.1 h1:NASsgP4q6tL94WH6nJxKWj8As2H/2kop/bB1d8JMyRY= +github.com/hashicorp/go-getter v1.6.1/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg= -github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/improbable-eng/grpc-web v0.14.1 h1:NrN4PY71A6tAz2sKDvC5JCauENWp0ykG8Oq1H3cpFvw= -github.com/improbable-eng/grpc-web v0.14.1/go.mod h1:zEjGHa8DAlkoOXmswrNvhUGEYQA9UI7DhrGeHR1DMGU= +github.com/ignite/cli v0.24.0 h1:2cggSIsT4MT9IIS4/8XqlwgekI0YWPMYeULLGrTgCUY= +github.com/ignite/cli v0.24.0/go.mod h1:XlqM9HK751rcKZg7RfrP9KiJRAVi4XfZskhGnHPgLr0= +github.com/ignite/modules v0.0.0-20220830145312-d006783a7a21 h1:2eqRFOwuBtP5prBIslVokLwLkXqekbY4cENDf2mEyxQ= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.9.0 h1:npqHz788dryJiR/l6K/RUQAyh2SwV91+d1dnh4RjO9w= +github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/ansi v1.0.2 h1:+Ei5HCAH0xsrQRCT2PDr4mq9r4Gm4tg+arNdXRkB22s= +github.com/jpillora/ansi v1.0.2/go.mod h1:D2tT+6uzJvN1nBVQILYWkIdq7zG+b5gcFN5WI/VyjMY= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jpillora/chisel v1.7.7 h1:eLbzoX+ekDhVmF5CpSJD01NtH/w7QMYeaFCIFbzn9ns= +github.com/jpillora/chisel v1.7.7/go.mod h1:X3ZzJDlOSlkMLVY3DMsdrd03rMtugLYk2IOUhvX0SXo= +github.com/jpillora/requestlog v1.0.0 h1:bg++eJ74T7DYL3DlIpiwknrtfdUA9oP/M4fL+PpqnyA= +github.com/jpillora/requestlog v1.0.0/go.mod h1:HTWQb7QfDc2jtHnWe2XEIEeJB7gJPnVdpNn52HXPvy8= +github.com/jpillora/sizestr v1.0.0 h1:4tr0FLxs1Mtq3TnsLDV+GYUWG7Q26a6s+tV5Zfw2ygw= +github.com/jpillora/sizestr v1.0.0/go.mod h1:bUhLv4ctkknatr6gR42qPxirmd5+ds1u7mzD+MZ33f0= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -592,98 +909,132 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= -github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= -github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-sqlite3 v1.14.9/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/mattn/go-zglob v0.0.3 h1:6Ry4EYsScDyt5di4OI6xw1bYhOqfE5S33Z1OPy+d+To= +github.com/mattn/go-zglob v0.0.3/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= +github.com/moby/sys/mount v0.3.1 h1:RX1K0x95oR8j5P1YefKDt7tE1C2kCCixV0H8Aza3GaI= +github.com/moby/sys/mount v0.3.1/go.mod h1:6IZknFQiqjLpwuYJD5Zk0qYEuJiws36M88MIXnZHya0= +github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/mountinfo v0.6.0 h1:gUDhXQx58YNrpHlK4nSL+7y2pxFZkUcXqzFDKWdC0Oo= +github.com/moby/sys/mountinfo v0.6.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -692,123 +1043,155 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= -github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= -github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= +github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= +github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E= +github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= -github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= +github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -816,23 +1199,28 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= +github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -840,8 +1228,9 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= +github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -851,88 +1240,97 @@ github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzy github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= -github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= +github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= +github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= +github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= -github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= -github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -940,37 +1338,47 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.4 h1:wZRexSlwd7ZXfKINDLsO4r7WBt3gTKONc6K/VesHvHM= -github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= +github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/takuoki/gocase v1.0.0 h1:gPwLJTWVm2T1kUiCsKirg/faaIUGVTI0FA3SYr75a44= +github.com/takuoki/gocase v1.0.0/go.mod h1:QgOKJrbuJoDrtoKswBX1/Dw8mJrkOV9tbQZJaxaJ6zc= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= +github.com/tendermint/fundraising v0.3.1 h1:S4uOV/T7YNBqXhsCZnq/TUoHB0d2kM+6tKeTD4WhLN0= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tendermint v0.34.14/go.mod h1:FrwVm3TvsVicI9Z7FlucHV6Znfd5KBc/Lpp69cCwtk0= -github.com/tendermint/tendermint v0.34.19 h1:y0P1qI5wSa9IRuhKnTDA6IUcOrLi1hXJuALR+R7HFEk= -github.com/tendermint/tendermint v0.34.19/go.mod h1:R5+wgIwSxMdKQcmOaeudL0Cjkr3HDkhpcdum6VeU3R4= -github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= -github.com/tendermint/tm-db v0.6.6/go.mod h1:wP8d49A85B7/erz/r4YbKssKw6ylsO/hKtFk7E1aWZI= +github.com/tendermint/spn v0.2.1-0.20220907161743-aab4d3df1f2b h1:QqEBIiWRC+uPM8FCXuxcvzTS6isR/lycQJDRHgsmg2c= +github.com/tendermint/spn v0.2.1-0.20220907161743-aab4d3df1f2b/go.mod h1:CMzd3oBkjR9I1h/BEaU1K2V78XqARFWGjxPP9Xy/FIE= +github.com/tendermint/tendermint v0.34.21 h1:UiGGnBFHVrZhoQVQ7EfwSOLuCtarqCSsRf8VrklqB7s= +github.com/tendermint/tendermint v0.34.21/go.mod h1:XDvfg6U7grcFTDx7VkzxnhazQ/bspGJAn4DZ6DcLLjQ= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -979,14 +1387,36 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= -github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -994,22 +1424,20 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 h1:O9XLFXGkVswDFmH9LaYpqu+r/AAFWqr0DL6V00KEVFg= +github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -1018,61 +1446,56 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -1081,9 +1504,12 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1097,20 +1523,20 @@ golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1127,11 +1553,13 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1149,29 +1577,33 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211208012354-db4efeb81f4b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220726230323-06994584191e h1:wOQNKh1uuDGRnmgF0jDxh7ctgGy/3P4rYWQRVJD4/Yg= +golang.org/x/net v0.0.0-20220726230323-06994584191e/go.mod h1:AaygXjzTFtRAg2ttMY5RMuhpJ3cNnI0XpyFJD1iQRSM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1187,8 +1619,13 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 h1:2o1E+E8TpNLklK9nHiPiK1uzIYrIHt+cQx3ynCwq9V8= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1200,7 +1637,11 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1210,25 +1651,31 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1237,12 +1684,15 @@ golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1254,29 +1704,36 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1290,25 +1747,37 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1324,9 +1793,14 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1337,15 +1811,16 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1354,7 +1829,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1367,19 +1842,21 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1389,15 +1866,21 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1428,23 +1911,36 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0 h1:NMB9J4cCxs9xEm+1Z9QiO3eFvn7EnQj3Eo3hN6ugVlg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1452,7 +1948,9 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1468,13 +1966,14 @@ google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1485,6 +1984,7 @@ google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1501,17 +2001,72 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd h1:e0TwkXOdbnH/1x5rc5MZ/VYyiZ4v+RdVfrGMqEwT68I= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc h1:Nf+EdcTLHR8qDNN/KfkQL0u0ssxt9OhbaWCl5C0ucEI= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1526,29 +2081,39 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= -gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI= +gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1562,9 +2127,15 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1572,12 +2143,53 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= +k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= +k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= +k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= +k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= +k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= +k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= +k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= +k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= +k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= +k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= +k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= +k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= +k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= +k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= +pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/testutil/network/network.go b/testutil/network/network.go new file mode 100644 index 00000000..f034fac0 --- /dev/null +++ b/testutil/network/network.go @@ -0,0 +1,81 @@ +package network + +import ( + "fmt" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + pruningtypes "github.com/cosmos/cosmos-sdk/pruning/types" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/testutil/network" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + "github.com/stretchr/testify/require" + tmrand "github.com/tendermint/tendermint/libs/rand" + tmdb "github.com/tendermint/tm-db" + + "github.com/okp4/okp4d/app" +) + +type ( + Network = network.Network + Config = network.Config +) + +// New creates instance with fully configured cosmos network. +// Accepts optional config, that will be used in place of the DefaultConfig() if provided. +func New(t *testing.T, configs ...network.Config) *network.Network { + if len(configs) > 1 { + panic("at most one config should be provided") + } + var cfg network.Config + if len(configs) == 0 { + cfg = DefaultConfig() + } else { + cfg = configs[0] + } + net, err := network.New(t, t.TempDir(), cfg) + require.NoError(t, err) + t.Cleanup(net.Cleanup) + return net +} + +// DefaultConfig will initialize config for the network with custom application, +// genesis and single validator. All other parameters are inherited from cosmos-sdk/testutil/network.DefaultConfig +func DefaultConfig() network.Config { + encoding := cosmoscmd.MakeEncodingConfig(app.ModuleBasics) + return network.Config{ + Codec: encoding.Marshaler, + TxConfig: encoding.TxConfig, + LegacyAmino: encoding.Amino, + InterfaceRegistry: encoding.InterfaceRegistry, + AccountRetriever: authtypes.AccountRetriever{}, + AppConstructor: func(val network.Validator) servertypes.Application { + return app.New( + val.Ctx.Logger, tmdb.NewMemDB(), nil, true, map[int64]bool{}, val.Ctx.Config.RootDir, 0, + encoding, + simapp.EmptyAppOptions{}, + baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), + baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), + ) + }, + GenesisState: app.ModuleBasics.DefaultGenesis(encoding.Marshaler), + TimeoutCommit: 2 * time.Second, + ChainID: "chain-" + tmrand.NewRand().Str(6), + NumValidators: 1, + BondDenom: sdk.DefaultBondDenom, + MinGasPrices: fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), + AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), + StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), + BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), + PruningStrategy: pruningtypes.PruningOptionNothing, + CleanupDir: true, + SigningAlgo: string(hd.Secp256k1Type), + KeyringOptions: []keyring.Option{}, + } +} diff --git a/testutil/nullify/nullify.go b/testutil/nullify/nullify.go index b5c8a7ee..3b968c09 100644 --- a/testutil/nullify/nullify.go +++ b/testutil/nullify/nullify.go @@ -16,7 +16,6 @@ var ( // Fill analyze all struct fields and slices with // reflection and initialize the nil and empty slices, // structs, and pointers. -// nolint: exhaustive func Fill(x interface{}) interface{} { v := reflect.Indirect(reflect.ValueOf(x)) switch v.Kind() { diff --git a/testutil/sample/sample.go b/testutil/sample/sample.go index 671742a4..98f2153e 100644 --- a/testutil/sample/sample.go +++ b/testutil/sample/sample.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// AccAddress returns a sample account address. +// AccAddress returns a sample account address func AccAddress() string { pk := ed25519.GenPrivKey().PubKey() addr := pk.Address()

p^T4-S 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%0DVK8Bi%Wp_$KQ5h1Q7%f7GNOf#Dgbiz-E3 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�xC)=_DDeN3ie|bU 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 z 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