diff --git a/buf.work.yaml b/buf.work.yaml
new file mode 100644
index 00000000..1878b341
--- /dev/null
+++ b/buf.work.yaml
@@ -0,0 +1,3 @@
+version: v1
+directories:
+ - proto
diff --git a/electra/.github/workflows/release.yml b/electra/.github/workflows/release.yml
new file mode 100644
index 00000000..0d472b42
--- /dev/null
+++ b/electra/.github/workflows/release.yml
@@ -0,0 +1,55 @@
+# This workflow is useful if you want to automate the process of:
+#
+# a) Creating a new prelease when you push a new tag with a "v" prefix (version).
+#
+# This type of prerelease is meant to be used for production: alpha, beta, rc, etc. types of releases.
+# After the prerelease is created, you need to make your changes on the release page at the relevant
+# Github page and publish your release.
+#
+# b) Creating/updating the "latest" prerelease when you push to your default branch.
+#
+# This type of prelease is useful to make your bleeding-edge binaries available to advanced users.
+#
+# The workflow will not run if there is no tag pushed with a "v" prefix and no change pushed to your
+# default branch.
+on: push
+
+jobs:
+ might_release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Prepare Release Variables
+ id: vars
+ uses: ignite/cli/actions/release/vars@main
+
+ - name: Issue Release Assets
+ uses: ignite/cli/actions/cli@main
+ if: ${{ steps.vars.outputs.should_release == 'true' }}
+ with:
+ args: chain build --release --release.prefix ${{ steps.vars.outputs.tarball_prefix }} -t linux:amd64 -t darwin:amd64 -t darwin:arm64 -y
+ env:
+ DO_NOT_TRACK: 1
+
+ - name: Delete the "latest" Release
+ uses: dev-drprasad/delete-tag-and-release@v0.2.1
+ if: ${{ steps.vars.outputs.is_release_type_latest == 'true' }}
+ with:
+ tag_name: ${{ steps.vars.outputs.tag_name }}
+ delete_release: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Publish the Release
+ uses: softprops/action-gh-release@v1
+ if: ${{ steps.vars.outputs.should_release == 'true' }}
+ with:
+ tag_name: ${{ steps.vars.outputs.tag_name }}
+ files: release/*
+ prerelease: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/electra/.gitignore b/electra/.gitignore
new file mode 100644
index 00000000..c4ba55dc
--- /dev/null
+++ b/electra/.gitignore
@@ -0,0 +1,9 @@
+vue/node_modules
+vue/dist
+release/
+.idea/
+.vscode/
+.DS_Store
+*.dot
+*.log
+*.ign
diff --git a/electra/app/app.go b/electra/app/app.go
new file mode 100644
index 00000000..7dfd3ad7
--- /dev/null
+++ b/electra/app/app.go
@@ -0,0 +1,417 @@
+package app
+
+import (
+ "io"
+
+ clienthelpers "cosmossdk.io/client/v2/helpers"
+ "cosmossdk.io/depinject"
+ "cosmossdk.io/log"
+ storetypes "cosmossdk.io/store/types"
+ circuitkeeper "cosmossdk.io/x/circuit/keeper"
+ evidencekeeper "cosmossdk.io/x/evidence/keeper"
+ feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
+ upgradekeeper "cosmossdk.io/x/upgrade/keeper"
+ _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/bank" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/consensus" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects
+ _ "cosmossdk.io/x/circuit" // import for side-effects
+ _ "cosmossdk.io/x/evidence" // import for side-effects
+ _ "cosmossdk.io/x/feegrant/module" // import for side-effects
+ _ "cosmossdk.io/x/nft/module" // import for side-effects
+ nftkeeper "cosmossdk.io/x/nft/keeper"
+ _ "cosmossdk.io/x/upgrade" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/auth/vesting" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/authz/module" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/group/module" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/params" // import for side-effects
+ _ "github.com/cosmos/cosmos-sdk/x/slashing" // import for side-effects
+ _ "github.com/cosmos/ibc-go/modules/capability" // import for side-effects
+ _ "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" // import for side-effects
+ _ "github.com/cosmos/ibc-go/v8/modules/apps/29-fee" // import for side-effects
+ dbm "github.com/cosmos/cosmos-db"
+ abci "github.com/cometbft/cometbft/abci/types"
+ "github.com/cosmos/cosmos-sdk/baseapp"
+ "github.com/cosmos/cosmos-sdk/client"
+ "github.com/cosmos/cosmos-sdk/codec"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ "github.com/cosmos/cosmos-sdk/runtime"
+ "github.com/cosmos/cosmos-sdk/server"
+ "github.com/cosmos/cosmos-sdk/server/api"
+ "github.com/cosmos/cosmos-sdk/server/config"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ "github.com/cosmos/cosmos-sdk/x/auth"
+ authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
+ authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
+ bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
+ consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
+ crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
+ distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
+ "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"
+ groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
+ mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
+ paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
+ paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
+ paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
+ stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
+ capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
+ icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper"
+ icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper"
+ ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper"
+ ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper"
+ ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper"
+
+ // this line is used by starport scaffolding # stargate/app/moduleImport
+
+ "electra/docs"
+)
+
+const (
+ AccountAddressPrefix = "cosmos"
+ Name = "electra"
+)
+
+var (
+ // DefaultNodeHome default home directories for the application daemon
+ DefaultNodeHome string
+)
+
+var (
+ _ runtime.AppI = (*App)(nil)
+ _ servertypes.Application = (*App)(nil)
+)
+
+// 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 App struct {
+ *runtime.App
+ legacyAmino *codec.LegacyAmino
+ appCodec codec.Codec
+ txConfig client.TxConfig
+ interfaceRegistry codectypes.InterfaceRegistry
+
+ // keepers
+ AccountKeeper authkeeper.AccountKeeper
+ BankKeeper bankkeeper.Keeper
+ StakingKeeper *stakingkeeper.Keeper
+ DistrKeeper distrkeeper.Keeper
+ ConsensusParamsKeeper consensuskeeper.Keeper
+
+ SlashingKeeper slashingkeeper.Keeper
+ MintKeeper mintkeeper.Keeper
+ GovKeeper *govkeeper.Keeper
+ CrisisKeeper *crisiskeeper.Keeper
+ UpgradeKeeper *upgradekeeper.Keeper
+ ParamsKeeper paramskeeper.Keeper
+ AuthzKeeper authzkeeper.Keeper
+ EvidenceKeeper evidencekeeper.Keeper
+ FeeGrantKeeper feegrantkeeper.Keeper
+ GroupKeeper groupkeeper.Keeper
+ NFTKeeper nftkeeper.Keeper
+ CircuitBreakerKeeper circuitkeeper.Keeper
+
+ // IBC
+ IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
+ CapabilityKeeper *capabilitykeeper.Keeper
+ IBCFeeKeeper ibcfeekeeper.Keeper
+ ICAControllerKeeper icacontrollerkeeper.Keeper
+ ICAHostKeeper icahostkeeper.Keeper
+ TransferKeeper ibctransferkeeper.Keeper
+
+ // Scoped IBC
+ ScopedIBCKeeper capabilitykeeper.ScopedKeeper
+ ScopedIBCTransferKeeper capabilitykeeper.ScopedKeeper
+ ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper
+ ScopedICAHostKeeper capabilitykeeper.ScopedKeeper
+ ScopedKeepers map[string]capabilitykeeper.ScopedKeeper
+
+ // this line is used by starport scaffolding # stargate/app/keeperDeclaration
+
+ // simulation manager
+ sm *module.SimulationManager
+}
+
+func init() {
+ var err error
+ clienthelpers.EnvPrefix = Name
+ DefaultNodeHome, err = clienthelpers.GetNodeHomeDirectory("."+Name)
+ if err != nil {
+ panic(err)
+ }
+}
+
+// getGovProposalHandlers return the chain proposal handlers.
+func getGovProposalHandlers() []govclient.ProposalHandler {
+ var govProposalHandlers []govclient.ProposalHandler
+ // this line is used by starport scaffolding # stargate/app/govProposalHandlers
+
+ govProposalHandlers = append(govProposalHandlers,
+ paramsclient.ProposalHandler,
+ // this line is used by starport scaffolding # stargate/app/govProposalHandler
+ )
+
+ return govProposalHandlers
+}
+
+// AppConfig returns the default app config.
+func AppConfig() depinject.Config {
+ return depinject.Configs(
+ appConfig,
+ // Alternatively, load the app config from a YAML file.
+ // appconfig.LoadYAML(AppConfigYAML),
+ depinject.Supply(
+ // supply custom module basics
+ map[string]module.AppModuleBasic{
+ genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
+ govtypes.ModuleName: gov.NewAppModuleBasic(getGovProposalHandlers()),
+ // this line is used by starport scaffolding # stargate/appConfig/moduleBasic
+ },
+ ),
+ )
+}
+
+// New returns a reference to an initialized App.
+func New(
+ logger log.Logger,
+ db dbm.DB,
+ traceStore io.Writer,
+ loadLatest bool,
+ appOpts servertypes.AppOptions,
+ baseAppOptions ...func(*baseapp.BaseApp),
+) (*App, error) {
+ var (
+ app = &App{ScopedKeepers: make(map[string]capabilitykeeper.ScopedKeeper)}
+ appBuilder *runtime.AppBuilder
+
+ // merge the AppConfig and other configuration in one config
+ appConfig = depinject.Configs(
+ AppConfig(),
+ depinject.Supply(
+ appOpts, // supply app options
+ logger, // supply logger
+ // Supply with IBC keeper getter for the IBC modules with App Wiring.
+ // The IBC Keeper cannot be passed because it has not been initiated yet.
+ // Passing the getter, the app IBC Keeper will always be accessible.
+ // This needs to be removed after IBC supports App Wiring.
+ app.GetIBCKeeper,
+ app.GetCapabilityScopedKeeper,
+
+ // here alternative options can be supplied to the DI container.
+ // those options can be used f.e to override the default behavior of some modules.
+ // for instance supplying a custom address codec for not using bech32 addresses.
+ // read the depinject documentation and depinject module wiring for more information
+ // on available options and how to use them.
+ ),
+ )
+ )
+
+ if err := depinject.Inject(appConfig,
+ &appBuilder,
+ &app.appCodec,
+ &app.legacyAmino,
+ &app.txConfig,
+ &app.interfaceRegistry,
+ &app.AccountKeeper,
+ &app.BankKeeper,
+ &app.StakingKeeper,
+ &app.DistrKeeper,
+ &app.ConsensusParamsKeeper,
+ &app.SlashingKeeper,
+ &app.MintKeeper,
+ &app.GovKeeper,
+ &app.CrisisKeeper,
+ &app.UpgradeKeeper,
+ &app.ParamsKeeper,
+ &app.AuthzKeeper,
+ &app.EvidenceKeeper,
+ &app.FeeGrantKeeper,
+ &app.NFTKeeper,
+ &app.GroupKeeper,
+ &app.CircuitBreakerKeeper,
+ // this line is used by starport scaffolding # stargate/app/keeperDefinition
+ ); err != nil {
+ panic(err)
+ }
+
+ // add to default baseapp options
+ // enable optimistic execution
+ baseAppOptions = append(baseAppOptions, baseapp.SetOptimisticExecution())
+
+ // build app
+ app.App = appBuilder.Build(db, traceStore, baseAppOptions...)
+
+ // register legacy modules
+ if err := app.registerIBCModules(appOpts); err != nil {
+ return nil, err
+ }
+
+ // register streaming services
+ if err := app.RegisterStreamingServices(appOpts, app.kvStoreKeys()); err != nil {
+ return nil, err
+ }
+
+ /**** Module Options ****/
+
+ app.ModuleManager.RegisterInvariants(app.CrisisKeeper)
+
+ // create the simulation manager and define the order of the modules for deterministic simulations
+ overrideModules := map[string]module.AppModuleSimulation{
+ authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
+ }
+ app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
+ app.sm.RegisterStoreDecoders()
+
+ // A custom InitChainer sets if extra pre-init-genesis logic is required.
+ // This is necessary for manually registered modules that do not support app wiring.
+ // Manually set the module version map as shown below.
+ // The upgrade module will automatically handle de-duplication of the module version map.
+ app.SetInitChainer(func(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
+ if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil {
+ return nil, err
+ }
+ return app.App.InitChainer(ctx, req)
+ })
+
+ if err := app.Load(loadLatest); err != nil {
+ return nil, err
+ }
+
+ return app, nil
+}
+
+// LegacyAmino returns App'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 *App) LegacyAmino() *codec.LegacyAmino {
+ return app.legacyAmino
+}
+
+// AppCodec returns App's app 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 *App) AppCodec() codec.Codec {
+ return app.appCodec
+}
+
+// InterfaceRegistry returns App's interfaceRegistry.
+func (app *App) InterfaceRegistry() codectypes.InterfaceRegistry {
+ return app.interfaceRegistry
+}
+
+// TxConfig returns App's tx config.
+func (app *App) TxConfig() client.TxConfig {
+ return app.txConfig
+}
+
+// GetKey returns the KVStoreKey for the provided store key.
+func (app *App) GetKey(storeKey string) *storetypes.KVStoreKey {
+ kvStoreKey, ok := app.UnsafeFindStoreKey(storeKey).(*storetypes.KVStoreKey)
+ if !ok {
+ return nil
+ }
+ return kvStoreKey
+}
+
+// GetMemKey returns the MemoryStoreKey for the provided store key.
+func (app *App) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {
+ key, ok := app.UnsafeFindStoreKey(storeKey).(*storetypes.MemoryStoreKey)
+ if !ok {
+ return nil
+ }
+
+ return key
+}
+
+// kvStoreKeys returns all the kv store keys registered inside App.
+func (app *App) kvStoreKeys() map[string]*storetypes.KVStoreKey {
+ keys := make(map[string]*storetypes.KVStoreKey)
+ for _, k := range app.GetStoreKeys() {
+ if kv, ok := k.(*storetypes.KVStoreKey); ok {
+ keys[kv.Name()] = kv
+ }
+ }
+
+ return keys
+}
+
+// GetSubspace returns a param subspace for a given module name.
+func (app *App) GetSubspace(moduleName string) paramstypes.Subspace {
+ subspace, _ := app.ParamsKeeper.GetSubspace(moduleName)
+ return subspace
+}
+
+// GetIBCKeeper returns the IBC keeper.
+func (app *App) GetIBCKeeper() *ibckeeper.Keeper {
+ return app.IBCKeeper
+}
+
+// GetCapabilityScopedKeeper returns the capability scoped keeper.
+func (app *App) GetCapabilityScopedKeeper(moduleName string) capabilitykeeper.ScopedKeeper {
+ sk, ok := app.ScopedKeepers[moduleName]
+ if !ok {
+ sk = app.CapabilityKeeper.ScopeToModule(moduleName)
+ app.ScopedKeepers[moduleName] = sk
+ }
+ return sk
+}
+
+// SimulationManager implements the SimulationApp interface.
+func (app *App) SimulationManager() *module.SimulationManager {
+ return app.sm
+}
+
+// RegisterAPIRoutes registers all application module routes with the provided
+// API server.
+func (app *App) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) {
+ app.App.RegisterAPIRoutes(apiSvr, apiConfig)
+ // register swagger API in app.go so that other applications can override easily
+ if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil {
+ panic(err)
+ }
+
+ // register app's OpenAPI routes.
+ docs.RegisterOpenAPIService(Name, apiSvr.Router)
+}
+
+// GetMaccPerms returns a copy of the module account permissions
+//
+// NOTE: This is solely to be used for testing purposes.
+func GetMaccPerms() map[string][]string {
+ dup := make(map[string][]string)
+ for _, perms := range moduleAccPerms {
+ dup[perms.Account] = perms.Permissions
+ }
+ return dup
+}
+
+// BlockedAddresses returns all the app's blocked account addresses.
+func BlockedAddresses() map[string]bool {
+ result := make(map[string]bool)
+ if len(blockAccAddrs) > 0 {
+ for _, addr := range blockAccAddrs {
+ result[addr] = true
+ }
+ } else {
+ for addr := range GetMaccPerms() {
+ result[addr] = true
+ }
+ }
+ return result
+}
\ No newline at end of file
diff --git a/electra/app/app_config.go b/electra/app/app_config.go
new file mode 100644
index 00000000..155f1a78
--- /dev/null
+++ b/electra/app/app_config.go
@@ -0,0 +1,293 @@
+package app
+
+import (
+ "time"
+
+ runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
+ appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1"
+ authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1"
+ authzmodulev1 "cosmossdk.io/api/cosmos/authz/module/v1"
+ bankmodulev1 "cosmossdk.io/api/cosmos/bank/module/v1"
+ circuitmodulev1 "cosmossdk.io/api/cosmos/circuit/module/v1"
+ consensusmodulev1 "cosmossdk.io/api/cosmos/consensus/module/v1"
+ crisismodulev1 "cosmossdk.io/api/cosmos/crisis/module/v1"
+ distrmodulev1 "cosmossdk.io/api/cosmos/distribution/module/v1"
+ evidencemodulev1 "cosmossdk.io/api/cosmos/evidence/module/v1"
+ feegrantmodulev1 "cosmossdk.io/api/cosmos/feegrant/module/v1"
+ genutilmodulev1 "cosmossdk.io/api/cosmos/genutil/module/v1"
+ govmodulev1 "cosmossdk.io/api/cosmos/gov/module/v1"
+ groupmodulev1 "cosmossdk.io/api/cosmos/group/module/v1"
+ mintmodulev1 "cosmossdk.io/api/cosmos/mint/module/v1"
+ nftmodulev1 "cosmossdk.io/api/cosmos/nft/module/v1"
+ paramsmodulev1 "cosmossdk.io/api/cosmos/params/module/v1"
+ slashingmodulev1 "cosmossdk.io/api/cosmos/slashing/module/v1"
+ stakingmodulev1 "cosmossdk.io/api/cosmos/staking/module/v1"
+ txconfigv1 "cosmossdk.io/api/cosmos/tx/config/v1"
+ upgrademodulev1 "cosmossdk.io/api/cosmos/upgrade/module/v1"
+ vestingmodulev1 "cosmossdk.io/api/cosmos/vesting/module/v1"
+ "cosmossdk.io/core/appconfig"
+ circuittypes "cosmossdk.io/x/circuit/types"
+ evidencetypes "cosmossdk.io/x/evidence/types"
+ "cosmossdk.io/x/feegrant"
+ "cosmossdk.io/x/nft"
+ upgradetypes "cosmossdk.io/x/upgrade/types"
+ "github.com/cosmos/cosmos-sdk/runtime"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
+ "github.com/cosmos/cosmos-sdk/x/authz"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
+ crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
+ distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
+ genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
+ govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
+ "github.com/cosmos/cosmos-sdk/x/group"
+ minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
+ paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
+ icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types"
+ ibcfeetypes "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types"
+ ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
+ ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
+ "google.golang.org/protobuf/types/known/durationpb"
+
+ // this line is used by starport scaffolding # stargate/app/moduleImport
+)
+
+var (
+ // NOTE: The genutils module must occur after staking so that pools are
+ // properly initialized with tokens from genesis accounts.
+ // NOTE: The genutils module must also occur after auth so that it can access the params from auth.
+ // NOTE: Capability module must occur first so that it can initialize any capabilities
+ // so that other modules that want to create or claim capabilities afterwards in InitChain
+ // can do so safely.
+ genesisModuleOrder = []string{
+ // cosmos-sdk/ibc modules
+ capabilitytypes.ModuleName,
+ authtypes.ModuleName,
+ banktypes.ModuleName,
+ distrtypes.ModuleName,
+ stakingtypes.ModuleName,
+ slashingtypes.ModuleName,
+ govtypes.ModuleName,
+ minttypes.ModuleName,
+ crisistypes.ModuleName,
+ ibcexported.ModuleName,
+ genutiltypes.ModuleName,
+ evidencetypes.ModuleName,
+ authz.ModuleName,
+ ibctransfertypes.ModuleName,
+ icatypes.ModuleName,
+ ibcfeetypes.ModuleName,
+ feegrant.ModuleName,
+ paramstypes.ModuleName,
+ upgradetypes.ModuleName,
+ vestingtypes.ModuleName,
+ nft.ModuleName,
+ group.ModuleName,
+ consensustypes.ModuleName,
+ circuittypes.ModuleName,
+ // chain modules
+ // this line is used by starport scaffolding # stargate/app/initGenesis
+ }
+
+ // During begin block slashing happens after distr.BeginBlocker so that
+ // there is nothing left over in the validator fee pool, so as to keep the
+ // CanWithdrawInvariant invariant.
+ // NOTE: staking module is required if HistoricalEntries param > 0
+ // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC)
+ beginBlockers = []string{
+ // cosmos sdk modules
+ minttypes.ModuleName,
+ distrtypes.ModuleName,
+ slashingtypes.ModuleName,
+ evidencetypes.ModuleName,
+ stakingtypes.ModuleName,
+ authz.ModuleName,
+ genutiltypes.ModuleName,
+ // ibc modules
+ capabilitytypes.ModuleName,
+ ibcexported.ModuleName,
+ ibctransfertypes.ModuleName,
+ icatypes.ModuleName,
+ ibcfeetypes.ModuleName,
+ // chain modules
+ // this line is used by starport scaffolding # stargate/app/beginBlockers
+ }
+
+ endBlockers = []string{
+ // cosmos sdk modules
+ crisistypes.ModuleName,
+ govtypes.ModuleName,
+ stakingtypes.ModuleName,
+ feegrant.ModuleName,
+ group.ModuleName,
+ genutiltypes.ModuleName,
+ // ibc modules
+ ibcexported.ModuleName,
+ ibctransfertypes.ModuleName,
+ capabilitytypes.ModuleName,
+ icatypes.ModuleName,
+ ibcfeetypes.ModuleName,
+ // chain modules
+ // this line is used by starport scaffolding # stargate/app/endBlockers
+ }
+
+ preBlockers = []string{
+ upgradetypes.ModuleName,
+ // this line is used by starport scaffolding # stargate/app/preBlockers
+ }
+
+ // module account permissions
+ moduleAccPerms = []*authmodulev1.ModuleAccountPermission{
+ {Account: authtypes.FeeCollectorName},
+ {Account: distrtypes.ModuleName},
+ {Account: minttypes.ModuleName, Permissions: []string{authtypes.Minter}},
+ {Account: stakingtypes.BondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},
+ {Account: stakingtypes.NotBondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},
+ {Account: govtypes.ModuleName, Permissions: []string{authtypes.Burner}},
+ {Account: nft.ModuleName},
+ {Account: ibctransfertypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}},
+ {Account: ibcfeetypes.ModuleName},
+ {Account: icatypes.ModuleName},
+ // this line is used by starport scaffolding # stargate/app/maccPerms
+ }
+
+ // blocked account addresses
+ blockAccAddrs = []string{
+ authtypes.FeeCollectorName,
+ distrtypes.ModuleName,
+ minttypes.ModuleName,
+ stakingtypes.BondedPoolName,
+ stakingtypes.NotBondedPoolName,
+ nft.ModuleName,
+ // We allow the following module accounts to receive funds:
+ // govtypes.ModuleName
+ }
+
+ // appConfig application configuration (used by depinject)
+ appConfig = appconfig.Compose(&appv1alpha1.Config{
+ Modules: []*appv1alpha1.ModuleConfig{
+ {
+ Name: runtime.ModuleName,
+ Config: appconfig.WrapAny(&runtimev1alpha1.Module{
+ AppName: Name,
+ PreBlockers: preBlockers,
+ BeginBlockers: beginBlockers,
+ EndBlockers: endBlockers,
+ InitGenesis: genesisModuleOrder,
+ OverrideStoreKeys: []*runtimev1alpha1.StoreKeyConfig{
+ {
+ ModuleName: authtypes.ModuleName,
+ KvStoreKey: "acc",
+ },
+ },
+ // When ExportGenesis is not specified, the export genesis module order
+ // is equal to the init genesis order
+ // ExportGenesis: genesisModuleOrder,
+ // Uncomment if you want to set a custom migration order here.
+ // OrderMigrations: nil,
+ }),
+ },
+ {
+ Name: authtypes.ModuleName,
+ Config: appconfig.WrapAny(&authmodulev1.Module{
+ Bech32Prefix: AccountAddressPrefix,
+ ModuleAccountPermissions: moduleAccPerms,
+ // By default modules authority is the governance module. This is configurable with the following:
+ // Authority: "group", // A custom module authority can be set using a module name
+ // Authority: "cosmos1cwwv22j5ca08ggdv9c2uky355k908694z577tv", // or a specific address
+ }),
+ },
+ {
+ Name: nft.ModuleName,
+ Config: appconfig.WrapAny(&nftmodulev1.Module{}),
+ },
+ {
+ Name: vestingtypes.ModuleName,
+ Config: appconfig.WrapAny(&vestingmodulev1.Module{}),
+ },
+ {
+ Name: banktypes.ModuleName,
+ Config: appconfig.WrapAny(&bankmodulev1.Module{
+ BlockedModuleAccountsOverride: blockAccAddrs,
+ }),
+ },
+ {
+ Name: stakingtypes.ModuleName,
+ Config: appconfig.WrapAny(&stakingmodulev1.Module{
+ // NOTE: specifying a prefix is only necessary when using bech32 addresses
+ // If not specfied, the auth Bech32Prefix appended with "valoper" and "valcons" is used by default
+ Bech32PrefixValidator: AccountAddressPrefix + "valoper",
+ Bech32PrefixConsensus: AccountAddressPrefix + "valcons",
+ }),
+ },
+ {
+ Name: slashingtypes.ModuleName,
+ Config: appconfig.WrapAny(&slashingmodulev1.Module{}),
+ },
+ {
+ Name: paramstypes.ModuleName,
+ Config: appconfig.WrapAny(¶msmodulev1.Module{}),
+ },
+ {
+ Name: "tx",
+ Config: appconfig.WrapAny(&txconfigv1.Config{}),
+ },
+ {
+ Name: genutiltypes.ModuleName,
+ Config: appconfig.WrapAny(&genutilmodulev1.Module{}),
+ },
+ {
+ Name: authz.ModuleName,
+ Config: appconfig.WrapAny(&authzmodulev1.Module{}),
+ },
+ {
+ Name: upgradetypes.ModuleName,
+ Config: appconfig.WrapAny(&upgrademodulev1.Module{}),
+ },
+ {
+ Name: distrtypes.ModuleName,
+ Config: appconfig.WrapAny(&distrmodulev1.Module{}),
+ },
+ {
+ Name: evidencetypes.ModuleName,
+ Config: appconfig.WrapAny(&evidencemodulev1.Module{}),
+ },
+ {
+ Name: minttypes.ModuleName,
+ Config: appconfig.WrapAny(&mintmodulev1.Module{}),
+ },
+ {
+ Name: group.ModuleName,
+ Config: appconfig.WrapAny(&groupmodulev1.Module{
+ MaxExecutionPeriod: durationpb.New(time.Second * 1209600),
+ MaxMetadataLen: 255,
+ }),
+ },
+ {
+ Name: feegrant.ModuleName,
+ Config: appconfig.WrapAny(&feegrantmodulev1.Module{}),
+ },
+ {
+ Name: govtypes.ModuleName,
+ Config: appconfig.WrapAny(&govmodulev1.Module{}),
+ },
+ {
+ Name: crisistypes.ModuleName,
+ Config: appconfig.WrapAny(&crisismodulev1.Module{}),
+ },
+ {
+ Name: consensustypes.ModuleName,
+ Config: appconfig.WrapAny(&consensusmodulev1.Module{}),
+ },
+ {
+ Name: circuittypes.ModuleName,
+ Config: appconfig.WrapAny(&circuitmodulev1.Module{}),
+ },
+ // this line is used by starport scaffolding # stargate/app/moduleConfig
+ },
+ })
+)
diff --git a/electra/app/config.go b/electra/app/config.go
new file mode 100644
index 00000000..a36981bf
--- /dev/null
+++ b/electra/app/config.go
@@ -0,0 +1,19 @@
+package app
+
+import sdk "github.com/cosmos/cosmos-sdk/types"
+
+func init() {
+ // Set prefixes
+ accountPubKeyPrefix := AccountAddressPrefix + "pub"
+ validatorAddressPrefix := AccountAddressPrefix + "valoper"
+ validatorPubKeyPrefix := AccountAddressPrefix + "valoperpub"
+ consNodeAddressPrefix := AccountAddressPrefix + "valcons"
+ consNodePubKeyPrefix := AccountAddressPrefix + "valconspub"
+
+ // Set and seal config
+ config := sdk.GetConfig()
+ config.SetBech32PrefixForAccount(AccountAddressPrefix, accountPubKeyPrefix)
+ config.SetBech32PrefixForValidator(validatorAddressPrefix, validatorPubKeyPrefix)
+ config.SetBech32PrefixForConsensusNode(consNodeAddressPrefix, consNodePubKeyPrefix)
+ config.Seal()
+}
\ No newline at end of file
diff --git a/electra/app/export.go b/electra/app/export.go
new file mode 100644
index 00000000..8248408a
--- /dev/null
+++ b/electra/app/export.go
@@ -0,0 +1,248 @@
+package app
+
+import (
+ "encoding/json"
+ "fmt"
+ "log"
+
+ storetypes "cosmossdk.io/store/types"
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+ "github.com/cosmos/cosmos-sdk/x/staking"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+)
+
+// ExportAppStateAndValidators exports the state of the application for a genesis
+// file.
+func (app *App) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) {
+ // as if they could withdraw from the start of the next block
+ ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()})
+
+ // We export at last height + 1, because that's the height at which
+ // CometBFT will start InitChain.
+ height := app.LastBlockHeight() + 1
+ if forZeroHeight {
+ height = 0
+ app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs)
+ }
+
+ genState, err := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport)
+ if err != nil {
+ return servertypes.ExportedApp{}, err
+ }
+
+ appState, err := json.MarshalIndent(genState, "", " ")
+ if err != nil {
+ return servertypes.ExportedApp{}, err
+ }
+
+ validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
+ return servertypes.ExportedApp{
+ AppState: appState,
+ Validators: validators,
+ Height: height,
+ ConsensusParams: app.BaseApp.GetConsensusParams(ctx),
+ }, err
+}
+
+// prepare for fresh start at zero height
+// NOTE zero height genesis is a temporary feature which will be deprecated
+//
+// in favor 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
+ if len(jailAllowedAddrs) > 0 {
+ applyAllowedAddrs = true
+ }
+
+ allowedAddrsMap := make(map[string]bool)
+
+ for _, addr := range jailAllowedAddrs {
+ _, err := sdk.ValAddressFromBech32(addr)
+ if err != nil {
+ log.Fatal(err)
+ }
+ allowedAddrsMap[addr] = true
+ }
+
+
+ /* Just to be safe, assert the invariants on current state. */
+ app.CrisisKeeper.AssertInvariants(ctx)
+
+
+ /* Handle fee distribution state. */
+
+ // withdraw all validator commission
+ err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
+ valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
+ if err != nil {
+ panic(err)
+ }
+ _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valBz)
+ return false
+ })
+ if err != nil {
+ panic(err)
+ }
+
+ // withdraw all delegator rewards
+ dels, err := app.StakingKeeper.GetAllDelegations(ctx)
+ if err != nil {
+ panic(err)
+ }
+
+ for _, delegation := range dels {
+ valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
+ if err != nil {
+ panic(err)
+ }
+
+ delAddr := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress)
+
+ _, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr)
+ }
+
+ // clear validator slash events
+ app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx)
+
+ // clear validator historical rewards
+ app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx)
+
+ // set context height to zero
+ height := ctx.BlockHeight()
+ ctx = ctx.WithBlockHeight(0)
+
+ // reinitialize all validators
+ err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
+ valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator())
+ if err != nil {
+ panic(err)
+ }
+ // donate any unwithdrawn outstanding reward fraction tokens to the community pool
+ scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz)
+ if err != nil {
+ panic(err)
+ }
+ feePool, err := app.DistrKeeper.FeePool.Get(ctx)
+ if err != nil {
+ panic(err)
+ }
+ feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
+ if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil {
+ panic(err)
+ }
+
+ if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valBz); err != nil {
+ panic(err)
+ }
+ return false
+ })
+
+ // reinitialize all delegations
+ for _, del := range dels {
+ valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
+ if err != nil {
+ panic(err)
+ }
+ delAddr := sdk.MustAccAddressFromBech32(del.DelegatorAddress)
+
+ if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {
+ // never called as BeforeDelegationCreated always returns nil
+ panic(fmt.Errorf("error while incrementing period: %w", err))
+ }
+
+ if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {
+ // never called as AfterDelegationModified always returns nil
+ panic(fmt.Errorf("error while creating a new delegation period record: %w", err))
+ }
+ }
+
+ // reset context height
+ ctx = ctx.WithBlockHeight(height)
+
+ /* Handle staking state. */
+
+ // iterate through redelegations, reset creation height
+ err = app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) {
+ for i := range red.Entries {
+ red.Entries[i].CreationHeight = 0
+ }
+ err = app.StakingKeeper.SetRedelegation(ctx, red)
+ if err != nil {
+ panic(err)
+ }
+ return false
+ })
+ if err != nil {
+ panic(err)
+ }
+
+ // iterate through unbonding delegations, reset creation height
+ err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) {
+ for i := range ubd.Entries {
+ ubd.Entries[i].CreationHeight = 0
+ }
+ err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd)
+ if err != nil {
+ panic(err)
+ }
+ return false
+ })
+ if err != nil {
+ panic(err)
+ }
+
+ // Iterate through validators by power descending, reset bond heights, and
+ // update bond intra-tx counters.
+ store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey))
+ iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
+ counter := int16(0)
+
+ for ; iter.Valid(); iter.Next() {
+ addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))
+ validator, err := app.StakingKeeper.GetValidator(ctx, addr)
+ if err != nil {
+ panic("expected validator, not found")
+ }
+
+ validator.UnbondingHeight = 0
+ if applyAllowedAddrs && !allowedAddrsMap[addr.String()] {
+ validator.Jailed = true
+ }
+
+ if err := app.StakingKeeper.SetValidator(ctx, validator); err != nil {
+ panic(err)
+ }
+ counter++
+ }
+
+ if err := iter.Close(); err != nil {
+ app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err)
+ return
+ }
+
+ _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+
+ /* Handle slashing state. */
+
+ // reset start height on signing infos
+ if err := app.SlashingKeeper.IterateValidatorSigningInfos(
+ ctx,
+ func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) {
+ info.StartHeight = 0
+ _ = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info)
+ return false
+ },
+ ); err != nil {
+ log.Fatal(err)
+ }
+
+}
diff --git a/electra/app/genesis.go b/electra/app/genesis.go
new file mode 100644
index 00000000..e4e849fc
--- /dev/null
+++ b/electra/app/genesis.go
@@ -0,0 +1,14 @@
+package app
+
+import (
+ "encoding/json"
+)
+
+// GenesisState of the blockchain is represented here as a map of raw json
+// messages key'd by a identifier string.
+// The identifier is used to determine which module genesis information belongs
+// to so it may be appropriately routed during init chain.
+// Within this application default genesis information is retrieved from
+// the ModuleBasicManager which populates json from each BasicModule
+// object provided to it during init.
+type GenesisState map[string]json.RawMessage
diff --git a/electra/app/genesis_account.go b/electra/app/genesis_account.go
new file mode 100644
index 00000000..91ff4dfc
--- /dev/null
+++ b/electra/app/genesis_account.go
@@ -0,0 +1,47 @@
+package app
+
+import (
+ "errors"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+)
+
+var _ authtypes.GenesisAccount = (*GenesisAccount)(nil)
+
+// GenesisAccount defines a type that implements the GenesisAccount interface
+// to be used for simulation accounts in the genesis state.
+type GenesisAccount struct {
+ *authtypes.BaseAccount
+
+ // vesting account fields
+ OriginalVesting sdk.Coins `json:"original_vesting" yaml:"original_vesting"` // total vesting coins upon initialization
+ DelegatedFree sdk.Coins `json:"delegated_free" yaml:"delegated_free"` // delegated vested coins at time of delegation
+ DelegatedVesting sdk.Coins `json:"delegated_vesting" yaml:"delegated_vesting"` // delegated vesting coins at time of delegation
+ StartTime int64 `json:"start_time" yaml:"start_time"` // vesting start time (UNIX Epoch time)
+ EndTime int64 `json:"end_time" yaml:"end_time"` // vesting end time (UNIX Epoch time)
+
+ // module account fields
+ ModuleName string `json:"module_name" yaml:"module_name"` // name of the module account
+ ModulePermissions []string `json:"module_permissions" yaml:"module_permissions"` // permissions of module account
+}
+
+// Validate checks for errors on the vesting and module account parameters
+func (sga GenesisAccount) Validate() error {
+ if !sga.OriginalVesting.IsZero() {
+ if sga.StartTime >= sga.EndTime {
+ return errors.New("vesting start-time cannot be before end-time")
+ }
+ }
+
+ if sga.ModuleName != "" {
+ ma := authtypes.ModuleAccount{
+ BaseAccount: sga.BaseAccount, Name: sga.ModuleName, Permissions: sga.ModulePermissions,
+ }
+ if err := ma.Validate(); err != nil {
+ return err
+ }
+ }
+
+ return sga.BaseAccount.Validate()
+}
diff --git a/electra/app/ibc.go b/electra/app/ibc.go
new file mode 100644
index 00000000..9494c7a2
--- /dev/null
+++ b/electra/app/ibc.go
@@ -0,0 +1,208 @@
+package app
+
+import (
+ "cosmossdk.io/core/appmodule"
+ storetypes "cosmossdk.io/store/types"
+ cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
+ govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
+ paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
+ "github.com/cosmos/ibc-go/modules/capability"
+ capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
+ capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
+ icamodule "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts"
+ icacontroller "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller"
+ icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper"
+ icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types"
+ icahost "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host"
+ icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper"
+ icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types"
+ icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types"
+ ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee"
+ ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper"
+ ibcfeetypes "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types"
+ ibctransfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer"
+ ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper"
+ ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
+ ibc "github.com/cosmos/ibc-go/v8/modules/core"
+ ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
+ ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
+ porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types"
+ ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
+ ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper"
+ solomachine "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine"
+ ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint"
+
+ // this line is used by starport scaffolding # ibc/app/import
+)
+
+// registerIBCModules register IBC keepers and non dependency inject modules.
+func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error {
+ // set up non depinject support modules store keys
+ if err := app.RegisterStores(
+ storetypes.NewKVStoreKey(capabilitytypes.StoreKey),
+ storetypes.NewKVStoreKey(ibcexported.StoreKey),
+ storetypes.NewKVStoreKey(ibctransfertypes.StoreKey),
+ storetypes.NewKVStoreKey(ibcfeetypes.StoreKey),
+ storetypes.NewKVStoreKey(icahosttypes.StoreKey),
+ storetypes.NewKVStoreKey(icacontrollertypes.StoreKey),
+ storetypes.NewMemoryStoreKey(capabilitytypes.MemStoreKey),
+ storetypes.NewTransientStoreKey(paramstypes.TStoreKey),
+ ); err != nil {
+ return err
+ }
+
+ // register the key tables for legacy param subspaces
+ keyTable := ibcclienttypes.ParamKeyTable()
+ keyTable.RegisterParamSet(&ibcconnectiontypes.Params{})
+ app.ParamsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(keyTable)
+ app.ParamsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable())
+ app.ParamsKeeper.Subspace(icacontrollertypes.SubModuleName).WithKeyTable(icacontrollertypes.ParamKeyTable())
+ app.ParamsKeeper.Subspace(icahosttypes.SubModuleName).WithKeyTable(icahosttypes.ParamKeyTable())
+
+ // add capability keeper and ScopeToModule for ibc module
+ app.CapabilityKeeper = capabilitykeeper.NewKeeper(
+ app.AppCodec(),
+ app.GetKey(capabilitytypes.StoreKey),
+ app.GetMemKey(capabilitytypes.MemStoreKey),
+ )
+
+ // add capability keeper and ScopeToModule for ibc module
+ scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName)
+ scopedIBCTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName)
+ scopedICAControllerKeeper := app.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName)
+ scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName)
+
+ // Create IBC keeper
+ app.IBCKeeper = ibckeeper.NewKeeper(
+ app.appCodec,
+ app.GetKey(ibcexported.StoreKey),
+ app.GetSubspace(ibcexported.ModuleName),
+ app.StakingKeeper,
+ app.UpgradeKeeper,
+ scopedIBCKeeper,
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ )
+
+ // Register the proposal types
+ // Deprecated: Avoid adding new handlers, instead use the new proposal flow
+ // by granting the governance module the right to execute the message.
+ // See: https://docs.cosmos.network/main/modules/gov#proposal-messages
+ govRouter := govv1beta1.NewRouter()
+ govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler)
+
+ app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
+ app.appCodec, app.GetKey(ibcfeetypes.StoreKey),
+ app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware
+ app.IBCKeeper.ChannelKeeper,
+ app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper,
+ )
+
+ // Create IBC transfer keeper
+ app.TransferKeeper = ibctransferkeeper.NewKeeper(
+ app.appCodec,
+ app.GetKey(ibctransfertypes.StoreKey),
+ app.GetSubspace(ibctransfertypes.ModuleName),
+ app.IBCFeeKeeper,
+ app.IBCKeeper.ChannelKeeper,
+ app.IBCKeeper.PortKeeper,
+ app.AccountKeeper,
+ app.BankKeeper,
+ scopedIBCTransferKeeper,
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ )
+
+ // Create interchain account keepers
+ app.ICAHostKeeper = icahostkeeper.NewKeeper(
+ app.appCodec,
+ app.GetKey(icahosttypes.StoreKey),
+ app.GetSubspace(icahosttypes.SubModuleName),
+ app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
+ app.IBCKeeper.ChannelKeeper,
+ app.IBCKeeper.PortKeeper,
+ app.AccountKeeper,
+ scopedICAHostKeeper,
+ app.MsgServiceRouter(),
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ )
+ app.ICAHostKeeper.WithQueryRouter(app.GRPCQueryRouter())
+
+ app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper(
+ app.appCodec,
+ app.GetKey(icacontrollertypes.StoreKey),
+ app.GetSubspace(icacontrollertypes.SubModuleName),
+ app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack
+ app.IBCKeeper.ChannelKeeper,
+ app.IBCKeeper.PortKeeper,
+ scopedICAControllerKeeper,
+ app.MsgServiceRouter(),
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
+ )
+ app.GovKeeper.SetLegacyRouter(govRouter)
+
+ // Create IBC modules with ibcfee middleware
+ transferIBCModule := ibcfee.NewIBCMiddleware(ibctransfer.NewIBCModule(app.TransferKeeper), app.IBCFeeKeeper)
+
+ // integration point for custom authentication modules
+ var noAuthzModule porttypes.IBCModule
+ icaControllerIBCModule := ibcfee.NewIBCMiddleware(
+ icacontroller.NewIBCMiddleware(noAuthzModule, app.ICAControllerKeeper),
+ app.IBCFeeKeeper,
+ )
+
+ icaHostIBCModule := ibcfee.NewIBCMiddleware(icahost.NewIBCModule(app.ICAHostKeeper), app.IBCFeeKeeper)
+
+ // Create static IBC router, add transfer route, then set and seal it
+ ibcRouter := porttypes.NewRouter().
+ AddRoute(ibctransfertypes.ModuleName, transferIBCModule).
+ AddRoute(icacontrollertypes.SubModuleName, icaControllerIBCModule).
+ AddRoute(icahosttypes.SubModuleName, icaHostIBCModule)
+
+ // this line is used by starport scaffolding # ibc/app/module
+
+ app.IBCKeeper.SetRouter(ibcRouter)
+
+ app.ScopedIBCKeeper = scopedIBCKeeper
+ app.ScopedIBCTransferKeeper = scopedIBCTransferKeeper
+ app.ScopedICAHostKeeper = scopedICAHostKeeper
+ app.ScopedICAControllerKeeper = scopedICAControllerKeeper
+
+ // register IBC modules
+ if err := app.RegisterModules(
+ ibc.NewAppModule(app.IBCKeeper),
+ ibctransfer.NewAppModule(app.TransferKeeper),
+ ibcfee.NewAppModule(app.IBCFeeKeeper),
+ icamodule.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper),
+ capability.NewAppModule(app.appCodec, *app.CapabilityKeeper, false),
+ ibctm.NewAppModule(),
+ solomachine.NewAppModule(),
+ ); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// RegisterIBC Since the IBC modules don't support dependency injection,
+// we need to manually register the modules on the client side.
+// This needs to be removed after IBC supports App Wiring.
+func RegisterIBC(registry cdctypes.InterfaceRegistry) map[string]appmodule.AppModule {
+ modules := map[string]appmodule.AppModule{
+ ibcexported.ModuleName: ibc.AppModule{},
+ ibctransfertypes.ModuleName: ibctransfer.AppModule{},
+ ibcfeetypes.ModuleName: ibcfee.AppModule{},
+ icatypes.ModuleName: icamodule.AppModule{},
+ capabilitytypes.ModuleName: capability.AppModule{},
+ ibctm.ModuleName: ibctm.AppModule{},
+ solomachine.ModuleName: solomachine.AppModule{},
+ }
+
+ for name, m := range modules {
+ module.CoreAppModuleBasicAdaptor(name, m).RegisterInterfaces(registry)
+ }
+
+ return modules
+}
\ No newline at end of file
diff --git a/electra/app/sim_bench_test.go b/electra/app/sim_bench_test.go
new file mode 100644
index 00000000..11e5471d
--- /dev/null
+++ b/electra/app/sim_bench_test.go
@@ -0,0 +1,151 @@
+package app_test
+
+import (
+ "fmt"
+ "os"
+ "testing"
+
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ "github.com/cosmos/cosmos-sdk/client/flags"
+ "github.com/cosmos/cosmos-sdk/server"
+ simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
+ simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
+ "github.com/cosmos/cosmos-sdk/x/simulation"
+ simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli"
+ "github.com/stretchr/testify/require"
+
+ "electra/app"
+)
+
+// Profile with:
+// `go test -benchmem -run=^$ -bench ^BenchmarkFullAppSimulation ./app -Commit=true -cpuprofile cpu.out`
+func BenchmarkFullAppSimulation(b *testing.B) {
+ b.ReportAllocs()
+
+ config := simcli.NewConfigFromFlags()
+ config.ChainID = SimAppChainID
+
+ db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "goleveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ if err != nil {
+ b.Fatalf("simulation setup failed: %s", err.Error())
+ }
+
+ if skip {
+ b.Skip("skipping benchmark application simulation")
+ }
+
+ defer func() {
+ require.NoError(b, db.Close())
+ require.NoError(b, os.RemoveAll(dir))
+ }()
+
+ appOptions := make(simtestutil.AppOptionsMap, 0)
+ appOptions[flags.FlagHome] = app.DefaultNodeHome
+ appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue
+
+ bApp, err := app.New(logger, db, nil, true, appOptions, interBlockCacheOpt())
+ require.NoError(b, err)
+ require.Equal(b, app.Name, bApp.Name())
+
+ // run randomized simulation
+ _, simParams, simErr := simulation.SimulateFromSeed(
+ b,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+
+ // export state and simParams before the simulation error is checked
+ if err = simtestutil.CheckExportSimulation(bApp, config, simParams); err != nil {
+ b.Fatal(err)
+ }
+
+ if simErr != nil {
+ b.Fatal(simErr)
+ }
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+}
+
+
+func BenchmarkInvariants(b *testing.B) {
+ b.ReportAllocs()
+
+ config := simcli.NewConfigFromFlags()
+ config.ChainID = SimAppChainID
+
+ db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-invariant-bench", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ if err != nil {
+ b.Fatalf("simulation setup failed: %s", err.Error())
+ }
+
+ if skip {
+ b.Skip("skipping benchmark application simulation")
+ }
+
+ config.AllInvariants = false
+
+ defer func() {
+ require.NoError(b, db.Close())
+ require.NoError(b, os.RemoveAll(dir))
+ }()
+
+ appOptions := make(simtestutil.AppOptionsMap, 0)
+ appOptions[flags.FlagHome] = app.DefaultNodeHome
+ appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue
+
+ bApp, err := app.New(logger, db, nil, true, appOptions, interBlockCacheOpt())
+ require.NoError(b, err)
+ require.Equal(b, app.Name, bApp.Name())
+
+ // run randomized simulation
+ _, simParams, simErr := simulation.SimulateFromSeed(
+ b,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simtypes.RandomAccounts, // Replace with own random account function if using keys other than secp256k1
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+
+ // export state and simParams before the simulation error is checked
+ if err = simtestutil.CheckExportSimulation(bApp, config, simParams); err != nil {
+ b.Fatal(err)
+ }
+
+ if simErr != nil {
+ b.Fatal(simErr)
+ }
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+
+ ctx := bApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight() + 1})
+
+ // 3. Benchmark each invariant separately
+ //
+ // NOTE: We use the crisis keeper as it has all the invariants registered with
+ // their respective metadata which makes it useful for testing/benchmarking.
+ for _, cr := range bApp.CrisisKeeper.Routes() {
+ cr := cr
+ b.Run(fmt.Sprintf("%s/%s", cr.ModuleName, cr.Route), func(b *testing.B) {
+ if res, stop := cr.Invar(ctx); stop {
+ b.Fatalf(
+ "broken invariant at block %d of %d\n%s",
+ ctx.BlockHeight()-1, config.NumBlocks, res,
+ )
+ }
+ })
+ }
+}
diff --git a/electra/app/sim_test.go b/electra/app/sim_test.go
new file mode 100644
index 00000000..a02514b7
--- /dev/null
+++ b/electra/app/sim_test.go
@@ -0,0 +1,430 @@
+package app_test
+
+import (
+ "encoding/json"
+ "flag"
+ "fmt"
+ "math/rand"
+ "os"
+ "runtime/debug"
+ "strings"
+ "testing"
+ "time"
+
+ "cosmossdk.io/log"
+ "cosmossdk.io/store"
+ storetypes "cosmossdk.io/store/types"
+ "cosmossdk.io/x/feegrant"
+ upgradetypes "cosmossdk.io/x/upgrade/types"
+ abci "github.com/cometbft/cometbft/abci/types"
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ dbm "github.com/cosmos/cosmos-db"
+ "github.com/cosmos/cosmos-sdk/baseapp"
+ "github.com/cosmos/cosmos-sdk/client/flags"
+ "github.com/cosmos/cosmos-sdk/server"
+ simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
+ simulationtypes "github.com/cosmos/cosmos-sdk/types/simulation"
+ authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
+ "github.com/cosmos/cosmos-sdk/x/simulation"
+ simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli"
+ slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ "github.com/spf13/viper"
+ "github.com/stretchr/testify/require"
+
+ "electra/app"
+)
+
+const (
+ SimAppChainID = "electra-simapp"
+)
+
+var FlagEnableStreamingValue bool
+
+// Get flags every time the simulator is run
+func init() {
+ simcli.GetSimulatorFlags()
+ flag.BoolVar(&FlagEnableStreamingValue, "EnableStreaming", false, "Enable streaming service")
+}
+
+// fauxMerkleModeOpt returns a BaseApp option to use a dbStoreAdapter instead of
+// an IAVLStore for faster simulation speed.
+func fauxMerkleModeOpt(bapp *baseapp.BaseApp) {
+ bapp.SetFauxMerkleMode()
+}
+
+// interBlockCacheOpt returns a BaseApp option function that sets the persistent
+// inter-block write-through cache.
+func interBlockCacheOpt() func(*baseapp.BaseApp) {
+ return baseapp.SetInterBlockCache(store.NewCommitKVStoreCacheManager())
+}
+
+// BenchmarkSimulation run the chain simulation
+// Running using starport command:
+// `ignite 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) {
+ simcli.FlagSeedValue = time.Now().Unix()
+ simcli.FlagVerboseValue = true
+ simcli.FlagCommitValue = true
+ simcli.FlagEnabledValue = true
+
+ config := simcli.NewConfigFromFlags()
+ config.ChainID = SimAppChainID
+
+ db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ if skip {
+ b.Skip("skipping application simulation")
+ }
+ require.NoError(b, err, "simulation setup failed")
+
+ defer func() {
+ require.NoError(b, db.Close())
+ require.NoError(b, os.RemoveAll(dir))
+ }()
+
+ appOptions := make(simtestutil.AppOptionsMap, 0)
+ appOptions[flags.FlagHome] = app.DefaultNodeHome
+ appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue
+
+ bApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
+ require.NoError(b, err)
+ require.Equal(b, app.Name, bApp.Name())
+
+ // run randomized simulation
+ _, simParams, simErr := simulation.SimulateFromSeed(
+ b,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simulationtypes.RandomAccounts,
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+
+ // export state and simParams before the simulation error is checked
+ err = simtestutil.CheckExportSimulation(bApp, config, simParams)
+ require.NoError(b, err)
+ require.NoError(b, simErr)
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+}
+
+func TestAppImportExport(t *testing.T) {
+ config := simcli.NewConfigFromFlags()
+ config.ChainID = SimAppChainID
+
+ db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ if skip {
+ t.Skip("skipping application import/export simulation")
+ }
+ require.NoError(t, err, "simulation setup failed")
+
+ defer func() {
+ require.NoError(t, db.Close())
+ require.NoError(t, os.RemoveAll(dir))
+ }()
+
+ appOptions := make(simtestutil.AppOptionsMap, 0)
+ appOptions[flags.FlagHome] = app.DefaultNodeHome
+ appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue
+
+ bApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
+ require.NoError(t, err)
+ require.Equal(t, app.Name, bApp.Name())
+
+ // Run randomized simulation
+ _, simParams, simErr := simulation.SimulateFromSeed(
+ t,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simulationtypes.RandomAccounts,
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+
+ // export state and simParams before the simulation error is checked
+ err = simtestutil.CheckExportSimulation(bApp, config, simParams)
+ require.NoError(t, err)
+ require.NoError(t, simErr)
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+
+ fmt.Printf("exporting genesis...\n")
+
+ exported, err := bApp.ExportAppStateAndValidators(false, []string{}, []string{})
+ require.NoError(t, err)
+
+ fmt.Printf("importing genesis...\n")
+
+ newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ require.NoError(t, err, "simulation setup failed")
+
+ defer func() {
+ require.NoError(t, newDB.Close())
+ require.NoError(t, os.RemoveAll(newDir))
+ }()
+
+ newApp, err := app.New(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
+ require.NoError(t, err)
+ require.Equal(t, app.Name, newApp.Name())
+
+ var genesisState app.GenesisState
+ err = json.Unmarshal(exported.AppState, &genesisState)
+ require.NoError(t, err)
+
+ ctxA := bApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight()})
+ ctxB := newApp.NewContextLegacy(true, cmtproto.Header{Height: bApp.LastBlockHeight()})
+ _, err = newApp.ModuleManager.InitGenesis(ctxB, bApp.AppCodec(), genesisState)
+
+ if err != nil {
+ if strings.Contains(err.Error(), "validator set is empty after InitGenesis") {
+ logger.Info("Skipping simulation as all validators have been unbonded")
+ logger.Info("err", err, "stacktrace", string(debug.Stack()))
+ return
+ }
+ }
+ require.NoError(t, err)
+ err = newApp.StoreConsensusParams(ctxB, exported.ConsensusParams)
+ require.NoError(t, err)
+ fmt.Printf("comparing stores...\n")
+
+ // skip certain prefixes
+ skipPrefixes := map[string][][]byte{
+ upgradetypes.StoreKey: {
+ []byte{upgradetypes.VersionMapByte},
+ },
+ stakingtypes.StoreKey: {
+ stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey,
+ stakingtypes.HistoricalInfoKey, stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey,
+ stakingtypes.UnbondingTypeKey, stakingtypes.ValidatorUpdatesKey,
+ },
+ authzkeeper.StoreKey: {authzkeeper.GrantQueuePrefix},
+ feegrant.StoreKey: {feegrant.FeeAllowanceQueueKeyPrefix},
+ slashingtypes.StoreKey: {slashingtypes.ValidatorMissedBlockBitmapKeyPrefix},
+ }
+
+ storeKeys := bApp.GetStoreKeys()
+ require.NotEmpty(t, storeKeys)
+
+ for _, appKeyA := range storeKeys {
+ // only compare kvstores
+ if _, ok := appKeyA.(*storetypes.KVStoreKey); !ok {
+ continue
+ }
+
+ keyName := appKeyA.Name()
+ appKeyB := newApp.GetKey(keyName)
+
+ storeA := ctxA.KVStore(appKeyA)
+ storeB := ctxB.KVStore(appKeyB)
+
+ failedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skipPrefixes[keyName])
+ require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare %s", keyName)
+
+ fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), appKeyA, appKeyB)
+
+ require.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(keyName, bApp.SimulationManager().StoreDecoders, failedKVAs, failedKVBs))
+ }
+}
+
+func TestAppSimulationAfterImport(t *testing.T) {
+ config := simcli.NewConfigFromFlags()
+ config.ChainID = SimAppChainID
+
+ db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ if skip {
+ t.Skip("skipping application simulation after import")
+ }
+ require.NoError(t, err, "simulation setup failed")
+
+ defer func() {
+ require.NoError(t, db.Close())
+ require.NoError(t, os.RemoveAll(dir))
+ }()
+
+ appOptions := make(simtestutil.AppOptionsMap, 0)
+ appOptions[flags.FlagHome] = app.DefaultNodeHome
+ appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue
+
+ bApp, err := app.New(logger, db, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
+ require.NoError(t, err)
+ require.Equal(t, app.Name, bApp.Name())
+
+ // Run randomized simulation
+ stopEarly, simParams, simErr := simulation.SimulateFromSeed(
+ t,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simulationtypes.RandomAccounts,
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+
+ // export state and simParams before the simulation error is checked
+ err = simtestutil.CheckExportSimulation(bApp, config, simParams)
+ require.NoError(t, err)
+ require.NoError(t, simErr)
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+
+ if stopEarly {
+ fmt.Println("can't export or import a zero-validator genesis, exiting test...")
+ return
+ }
+
+ fmt.Printf("exporting genesis...\n")
+
+ exported, err := bApp.ExportAppStateAndValidators(true, []string{}, []string{})
+ require.NoError(t, err)
+
+ fmt.Printf("importing genesis...\n")
+
+ newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue)
+ require.NoError(t, err, "simulation setup failed")
+
+ defer func() {
+ require.NoError(t, newDB.Close())
+ require.NoError(t, os.RemoveAll(newDir))
+ }()
+
+ newApp, err := app.New(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
+ require.NoError(t, err)
+ require.Equal(t, app.Name, newApp.Name())
+
+ _, err = newApp.InitChain(&abci.RequestInitChain{
+ AppStateBytes: exported.AppState,
+ ChainId: SimAppChainID,
+ })
+ require.NoError(t, err)
+
+ _, _, err = simulation.SimulateFromSeed(
+ t,
+ os.Stdout,
+ newApp.BaseApp,
+ simtestutil.AppStateFn(bApp.AppCodec(), bApp.SimulationManager(), bApp.DefaultGenesis()),
+ simulationtypes.RandomAccounts,
+ simtestutil.SimulationOperations(newApp, newApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+ require.NoError(t, err)
+}
+
+func TestAppStateDeterminism(t *testing.T) {
+ if !simcli.FlagEnabledValue {
+ t.Skip("skipping application simulation")
+ }
+
+ config := simcli.NewConfigFromFlags()
+ config.InitialBlockHeight = 1
+ config.ExportParamsPath = ""
+ config.OnOperation = true
+ config.AllInvariants = true
+ config.ChainID = SimAppChainID
+
+ numSeeds := 3
+ numTimesToRunPerSeed := 3 // This used to be set to 5, but we've temporarily reduced it to 3 for the sake of faster CI.
+ appHashList := make([]json.RawMessage, numTimesToRunPerSeed)
+
+ // We will be overriding the random seed and just run a single simulation on the provided seed value
+ if config.Seed != simcli.DefaultSeedValue {
+ numSeeds = 1
+ }
+
+ appOptions := viper.New()
+ if FlagEnableStreamingValue {
+ m := make(map[string]interface{})
+ m["streaming.abci.keys"] = []string{"*"}
+ m["streaming.abci.plugin"] = "abci_v1"
+ m["streaming.abci.stop-node-on-err"] = true
+ for key, value := range m {
+ appOptions.SetDefault(key, value)
+ }
+ }
+ appOptions.SetDefault(flags.FlagHome, app.DefaultNodeHome)
+ appOptions.SetDefault(server.FlagInvCheckPeriod, simcli.FlagPeriodValue)
+ if simcli.FlagVerboseValue {
+ appOptions.SetDefault(flags.FlagLogLevel, "debug")
+ }
+
+ for i := 0; i < numSeeds; i++ {
+ if config.Seed == simcli.DefaultSeedValue {
+ config.Seed = rand.Int63()
+ }
+ fmt.Println("config.Seed: ", config.Seed)
+
+ for j := 0; j < numTimesToRunPerSeed; j++ {
+ var logger log.Logger
+ if simcli.FlagVerboseValue {
+ logger = log.NewTestLogger(t)
+ } else {
+ logger = log.NewNopLogger()
+ }
+
+ db := dbm.NewMemDB()
+ bApp, err := app.New(
+ logger,
+ db,
+ nil,
+ true,
+ appOptions,
+ interBlockCacheOpt(),
+ baseapp.SetChainID(SimAppChainID),
+ )
+ require.NoError(t, err)
+
+ fmt.Printf(
+ "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n",
+ config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed,
+ )
+
+ _, _, err = simulation.SimulateFromSeed(
+ t,
+ os.Stdout,
+ bApp.BaseApp,
+ simtestutil.AppStateFn(
+ bApp.AppCodec(),
+ bApp.SimulationManager(),
+ bApp.DefaultGenesis(),
+ ),
+ simulationtypes.RandomAccounts,
+ simtestutil.SimulationOperations(bApp, bApp.AppCodec(), config),
+ app.BlockedAddresses(),
+ config,
+ bApp.AppCodec(),
+ )
+ require.NoError(t, err)
+
+ if config.Commit {
+ simtestutil.PrintStats(db)
+ }
+
+ appHash := bApp.LastCommitID().Hash
+ appHashList[j] = appHash
+
+ if j != 0 {
+ require.Equal(
+ t, string(appHashList[0]), string(appHashList[j]),
+ "non-determinism in seed %d: %d/%d, attempt: %d/%d\n", config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed,
+ )
+ }
+ }
+ }
+}
diff --git a/electra/buf.work.yaml b/electra/buf.work.yaml
new file mode 100644
index 00000000..1878b341
--- /dev/null
+++ b/electra/buf.work.yaml
@@ -0,0 +1,3 @@
+version: v1
+directories:
+ - proto
diff --git a/electra/cmd/electrad/cmd/commands.go b/electra/cmd/electrad/cmd/commands.go
new file mode 100644
index 00000000..f199c6fa
--- /dev/null
+++ b/electra/cmd/electrad/cmd/commands.go
@@ -0,0 +1,190 @@
+package cmd
+
+import (
+ "errors"
+ "io"
+
+ "cosmossdk.io/log"
+ confixcmd "cosmossdk.io/tools/confix/cmd"
+ dbm "github.com/cosmos/cosmos-db"
+ "github.com/cosmos/cosmos-sdk/client"
+ "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/pruning"
+ "github.com/cosmos/cosmos-sdk/client/rpc"
+ "github.com/cosmos/cosmos-sdk/client/snapshot"
+ "github.com/cosmos/cosmos-sdk/codec"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ "github.com/cosmos/cosmos-sdk/server"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
+ "github.com/cosmos/cosmos-sdk/x/crisis"
+ genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
+ "github.com/spf13/cobra"
+ "github.com/spf13/viper"
+
+ "electra/app"
+)
+
+func initRootCmd(
+ rootCmd *cobra.Command,
+ txConfig client.TxConfig,
+ basicManager module.BasicManager,
+) {
+ rootCmd.AddCommand(
+ genutilcli.InitCmd(basicManager, app.DefaultNodeHome),
+ NewInPlaceTestnetCmd(addModuleInitFlags),
+ debug.Cmd(),
+ confixcmd.ConfigCommand(),
+ pruning.Cmd(newApp, app.DefaultNodeHome),
+ snapshot.Cmd(newApp),
+ )
+
+ server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, addModuleInitFlags)
+
+ // add keybase, auxiliary RPC, query, genesis, and tx child commands
+ rootCmd.AddCommand(
+ server.StatusCommand(),
+ genesisCommand(txConfig, basicManager),
+ queryCommand(),
+ txCommand(),
+ keys.Commands(),
+ )
+}
+
+func addModuleInitFlags(startCmd *cobra.Command) {
+ crisis.AddModuleInitFlags(startCmd)
+}
+
+// genesisCommand builds genesis-related `electrad genesis` command. Users may provide application specific commands as a parameter
+func genesisCommand(txConfig client.TxConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command {
+ cmd := genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome)
+
+ for _, subCmd := range cmds {
+ cmd.AddCommand(subCmd)
+ }
+ return cmd
+}
+
+func queryCommand() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "query",
+ Aliases: []string{"q"},
+ Short: "Querying subcommands",
+ DisableFlagParsing: false,
+ SuggestionsMinimumDistance: 2,
+ RunE: client.ValidateCmd,
+ }
+
+ cmd.AddCommand(
+ rpc.QueryEventForTxCmd(),
+ rpc.ValidatorCommand(),
+ server.QueryBlockCmd(),
+ authcmd.QueryTxsByEventsCmd(),
+ server.QueryBlocksCmd(),
+ authcmd.QueryTxCmd(),
+ server.QueryBlockResultsCmd(),
+ )
+ cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID")
+
+ return cmd
+}
+
+func txCommand() *cobra.Command {
+ cmd := &cobra.Command{
+ Use: "tx",
+ Short: "Transactions subcommands",
+ DisableFlagParsing: false,
+ 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(),
+ authcmd.GetSimulateCmd(),
+ )
+ cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID")
+
+ return cmd
+}
+
+// newApp creates the application
+func newApp(
+ logger log.Logger,
+ db dbm.DB,
+ traceStore io.Writer,
+ appOpts servertypes.AppOptions,
+) servertypes.Application {
+ baseappOptions := server.DefaultBaseappOptions(appOpts)
+
+ app, err := app.New(
+ logger, db, traceStore, true,
+ appOpts,
+ baseappOptions...,
+ )
+ if err != nil {
+ panic(err)
+ }
+ return app
+}
+
+// appExport creates a new app (optionally at a given height) and exports state.
+func appExport(
+ logger log.Logger,
+ db dbm.DB,
+ traceStore io.Writer,
+ height int64,
+ forZeroHeight bool,
+ jailAllowedAddrs []string,
+ appOpts servertypes.AppOptions,
+ modulesToExport []string,
+) (servertypes.ExportedApp, error) {
+ var (
+ bApp *app.App
+ err error
+ )
+
+ // this check is necessary as we use the flag in x/upgrade.
+ // we can exit more gracefully by checking the flag here.
+ homePath, ok := appOpts.Get(flags.FlagHome).(string)
+ if !ok || homePath == "" {
+ return servertypes.ExportedApp{}, errors.New("application home not set")
+ }
+
+ viperAppOpts, ok := appOpts.(*viper.Viper)
+ if !ok {
+ return servertypes.ExportedApp{}, errors.New("appOpts is not viper.Viper")
+ }
+
+ // overwrite the FlagInvCheckPeriod
+ viperAppOpts.Set(server.FlagInvCheckPeriod, 1)
+ appOpts = viperAppOpts
+
+ if height != -1 {
+ bApp, err = app.New(logger, db, traceStore, false, appOpts)
+ if err != nil {
+ return servertypes.ExportedApp{}, err
+ }
+
+ if err := bApp.LoadHeight(height); err != nil {
+ return servertypes.ExportedApp{}, err
+ }
+ } else {
+ bApp, err = app.New(logger, db, traceStore, true, appOpts)
+ if err != nil {
+ return servertypes.ExportedApp{}, err
+ }
+ }
+
+ return bApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport)
+}
diff --git a/electra/cmd/electrad/cmd/config.go b/electra/cmd/electrad/cmd/config.go
new file mode 100644
index 00000000..a14ebc57
--- /dev/null
+++ b/electra/cmd/electrad/cmd/config.go
@@ -0,0 +1,62 @@
+package cmd
+
+import (
+ cmtcfg "github.com/cometbft/cometbft/config"
+ serverconfig "github.com/cosmos/cosmos-sdk/server/config"
+)
+
+// initCometBFTConfig helps to override default CometBFT Config values.
+// return cmtcfg.DefaultConfig if no custom configuration is required for the application.
+func initCometBFTConfig() *cmtcfg.Config {
+ cfg := cmtcfg.DefaultConfig()
+
+ // these values put a higher strain on node memory
+ // cfg.P2P.MaxNumInboundPeers = 100
+ // cfg.P2P.MaxNumOutboundPeers = 40
+
+ return cfg
+}
+
+// initAppConfig helps to override default appConfig template and configs.
+// return "", nil if no custom configuration is required for the application.
+func initAppConfig() (string, interface{}) {
+ // The following code snippet is just for reference.
+ type CustomAppConfig struct {
+ serverconfig.Config `mapstructure:",squash"`
+ }
+
+ // Optionally allow the chain developer to overwrite the SDK's default
+ // server config.
+ srvCfg := serverconfig.DefaultConfig()
+ // The SDK's default minimum gas price is set to "" (empty value) inside
+ // app.toml. If left empty by validators, the node will halt on startup.
+ // However, the chain developer can set a default app.toml value for their
+ // validators here.
+ //
+ // In summary:
+ // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their
+ // own app.toml config,
+ // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their
+ // own app.toml to override, or use this default value.
+ //
+ // In tests, we set the min gas prices to 0.
+ // srvCfg.MinGasPrices = "0stake"
+ // srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default
+
+ customAppConfig := CustomAppConfig{
+ Config: *srvCfg,
+ }
+
+ customAppTemplate := serverconfig.DefaultConfigTemplate
+ // Edit the default template file
+ //
+ // customAppTemplate := serverconfig.DefaultConfigTemplate + `
+ // [wasm]
+ // # This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries
+ // query_gas_limit = 300000
+ // # This is the number of wasm vm instances we keep cached in memory for speed-up
+ // # Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally
+ // lru_size = 0`
+
+ return customAppTemplate, customAppConfig
+}
diff --git a/electra/cmd/electrad/cmd/root.go b/electra/cmd/electrad/cmd/root.go
new file mode 100644
index 00000000..5334166e
--- /dev/null
+++ b/electra/cmd/electrad/cmd/root.go
@@ -0,0 +1,148 @@
+package cmd
+
+import (
+ "os"
+ "strings"
+
+ "cosmossdk.io/client/v2/autocli"
+ "cosmossdk.io/depinject"
+ "cosmossdk.io/log"
+ "github.com/cosmos/cosmos-sdk/client"
+ "github.com/cosmos/cosmos-sdk/client/config"
+ "github.com/cosmos/cosmos-sdk/client/flags"
+ "github.com/cosmos/cosmos-sdk/codec"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ "github.com/cosmos/cosmos-sdk/server"
+ "github.com/cosmos/cosmos-sdk/types/module"
+ "github.com/cosmos/cosmos-sdk/x/auth/tx"
+ authtxconfig "github.com/cosmos/cosmos-sdk/x/auth/tx/config"
+ "github.com/cosmos/cosmos-sdk/x/auth/types"
+ "github.com/spf13/cobra"
+ "github.com/spf13/pflag"
+
+ "electra/app"
+)
+
+// NewRootCmd creates a new root command for electrad. It is called once in the main function.
+func NewRootCmd() *cobra.Command {
+ var (
+ autoCliOpts autocli.AppOptions
+ moduleBasicManager module.BasicManager
+ clientCtx client.Context
+ )
+
+ if err := depinject.Inject(
+ depinject.Configs(app.AppConfig(),
+ depinject.Supply(
+ log.NewNopLogger(),
+ ),
+ depinject.Provide(
+ ProvideClientContext,
+ ),
+ ),
+ &autoCliOpts,
+ &moduleBasicManager,
+ &clientCtx,
+ ); err != nil {
+ panic(err)
+ }
+
+ rootCmd := &cobra.Command{
+ Use: app.Name + "d",
+ Short: "Start electra node",
+ SilenceErrors: true,
+ PersistentPreRunE: func(cmd *cobra.Command, _ []string) error {
+ // set the default command outputs
+ cmd.SetOut(cmd.OutOrStdout())
+ cmd.SetErr(cmd.ErrOrStderr())
+
+ clientCtx = clientCtx.WithCmdContext(cmd.Context())
+ clientCtx, err := client.ReadPersistentCommandFlags(clientCtx, cmd.Flags())
+ if err != nil {
+ return err
+ }
+
+ clientCtx, err = config.ReadFromClientConfig(clientCtx)
+ if err != nil {
+ return err
+ }
+
+ if err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil {
+ return err
+ }
+
+ customAppTemplate, customAppConfig := initAppConfig()
+ customCMTConfig := initCometBFTConfig()
+
+ return server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customCMTConfig)
+ },
+ }
+
+
+ // Since the IBC modules don't support dependency injection, we need to
+ // manually register the modules on the client side.
+ // This needs to be removed after IBC supports App Wiring.
+ ibcModules := app.RegisterIBC(clientCtx.InterfaceRegistry)
+ for name, mod := range ibcModules {
+ moduleBasicManager[name] = module.CoreAppModuleBasicAdaptor(name, mod)
+ autoCliOpts.Modules[name] = mod
+ }
+
+ initRootCmd(rootCmd, clientCtx.TxConfig, moduleBasicManager)
+
+ overwriteFlagDefaults(rootCmd, map[string]string{
+ flags.FlagChainID: strings.ReplaceAll(app.Name, "-", ""),
+ flags.FlagKeyringBackend: "test",
+ })
+
+ if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil {
+ panic(err)
+ }
+
+ return rootCmd
+}
+
+func overwriteFlagDefaults(c *cobra.Command, defaults map[string]string) {
+ set := func(s *pflag.FlagSet, key, val string) {
+ if f := s.Lookup(key); f != nil {
+ f.DefValue = val
+ _ = f.Value.Set(val)
+ }
+ }
+ for key, val := range defaults {
+ set(c.Flags(), key, val)
+ set(c.PersistentFlags(), key, val)
+ }
+ for _, c := range c.Commands() {
+ overwriteFlagDefaults(c, defaults)
+ }
+}
+
+func ProvideClientContext(
+ appCodec codec.Codec,
+ interfaceRegistry codectypes.InterfaceRegistry,
+ txConfigOpts tx.ConfigOptions,
+ legacyAmino *codec.LegacyAmino,
+) client.Context {
+ clientCtx := client.Context{}.
+ WithCodec(appCodec).
+ WithInterfaceRegistry(interfaceRegistry).
+ WithLegacyAmino(legacyAmino).
+ WithInput(os.Stdin).
+ WithAccountRetriever(types.AccountRetriever{}).
+ WithHomeDir(app.DefaultNodeHome).
+ WithViper(app.Name) // env variable prefix
+
+ // Read the config again to overwrite the default values with the values from the config file
+ clientCtx, _ = config.ReadFromClientConfig(clientCtx)
+
+ // textual is enabled by default, we need to re-create the tx config grpc instead of bank keeper.
+ txConfigOpts.TextualCoinMetadataQueryFn = authtxconfig.NewGRPCCoinMetadataQueryFn(clientCtx)
+ txConfig, err := tx.NewTxConfigWithOptions(clientCtx.Codec, txConfigOpts)
+ if err != nil {
+ panic(err)
+ }
+ clientCtx = clientCtx.WithTxConfig(txConfig)
+
+ return clientCtx
+}
\ No newline at end of file
diff --git a/electra/cmd/electrad/cmd/testnet.go b/electra/cmd/electrad/cmd/testnet.go
new file mode 100644
index 00000000..6732c39e
--- /dev/null
+++ b/electra/cmd/electrad/cmd/testnet.go
@@ -0,0 +1,266 @@
+package cmd
+
+import (
+ "fmt"
+ "io"
+ "strings"
+
+ "cosmossdk.io/log"
+ "cosmossdk.io/math"
+ storetypes "cosmossdk.io/store/types"
+ "github.com/cometbft/cometbft/crypto"
+ "github.com/cometbft/cometbft/libs/bytes"
+ tmos "github.com/cometbft/cometbft/libs/os"
+ tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ dbm "github.com/cosmos/cosmos-db"
+ "github.com/cosmos/cosmos-sdk/client/flags"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
+ "github.com/cosmos/cosmos-sdk/server"
+ servertypes "github.com/cosmos/cosmos-sdk/server/types"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
+ minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
+ slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ "github.com/spf13/cast"
+ "github.com/spf13/cobra"
+
+ "electra/app"
+)
+
+const (
+ valVotingPower int64 = 900000000000000
+)
+
+var (
+ flagAccountsToFund = "accounts-to-fund"
+)
+
+type valArgs struct {
+ newValAddr bytes.HexBytes
+ newOperatorAddress string
+ newValPubKey crypto.PubKey
+ accountsToFund []sdk.AccAddress
+ upgradeToTrigger string
+ homeDir string
+}
+
+func NewInPlaceTestnetCmd(addStartFlags servertypes.ModuleInitFlags) *cobra.Command {
+ cmd := server.InPlaceTestnetCreator(newTestnetApp)
+ addStartFlags(cmd)
+ cmd.Short = "Updates chain's application and consensus state with provided validator info and starts the node"
+ cmd.Long = `The test command modifies both application and consensus stores within a local mainnet node and starts the node,
+with the aim of facilitating testing procedures. This command replaces existing validator data with updated information,
+thereby removing the old validator set and introducing a new set suitable for local testing purposes. By altering the state extracted from the mainnet node,
+it enables developers to configure their local environments to reflect mainnet conditions more accurately.`
+
+ cmd.Example = fmt.Sprintf(`%sd in-place-testnet testing-1 cosmosvaloper1w7f3xx7e75p4l7qdym5msqem9rd4dyc4mq79dm --home $HOME/.%sd/validator1 --validator-privkey=6dq+/KHNvyiw2TToCgOpUpQKIzrLs69Rb8Az39xvmxPHNoPxY1Cil8FY+4DhT9YwD6s0tFABMlLcpaylzKKBOg== --accounts-to-fund="cosmos1f7twgcq4ypzg7y24wuywy06xmdet8pc4473tnq,cosmos1qvuhm5m644660nd8377d6l7yz9e9hhm9evmx3x"`, "electra", "electra")
+
+ cmd.Flags().String(flagAccountsToFund, "", "Comma-separated list of account addresses that will be funded for testing purposes")
+ return cmd
+}
+
+// newTestnetApp starts by running the normal newApp method. From there, the app interface returned is modified in order
+// for a testnet to be created from the provided app.
+func newTestnetApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application {
+ // Create an app and type cast to an App
+ newApp := newApp(logger, db, traceStore, appOpts)
+ testApp, ok := newApp.(*app.App)
+ if !ok {
+ panic("app created from newApp is not of type App")
+ }
+
+ // Get command args
+ args, err := getCommandArgs(appOpts)
+ if err != nil {
+ panic(err)
+ }
+
+ return initAppForTestnet(testApp, args)
+}
+
+
+func initAppForTestnet(app *app.App, args valArgs) *app.App {
+ // Required Changes:
+ //
+ ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{})
+
+ pubkey := &ed25519.PubKey{Key: args.newValPubKey.Bytes()}
+ pubkeyAny, err := codectypes.NewAnyWithValue(pubkey)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+
+ // STAKING
+ //
+
+ // Create Validator struct for our new validator.
+ newVal := stakingtypes.Validator{
+ OperatorAddress: args.newOperatorAddress,
+ ConsensusPubkey: pubkeyAny,
+ Jailed: false,
+ Status: stakingtypes.Bonded,
+ Tokens: math.NewInt(valVotingPower),
+ DelegatorShares: math.LegacyMustNewDecFromStr("10000000"),
+ Description: stakingtypes.Description{
+ Moniker: "Testnet Validator",
+ },
+ Commission: stakingtypes.Commission{
+ CommissionRates: stakingtypes.CommissionRates{
+ Rate: math.LegacyMustNewDecFromStr("0.05"),
+ MaxRate: math.LegacyMustNewDecFromStr("0.1"),
+ MaxChangeRate: math.LegacyMustNewDecFromStr("0.05"),
+ },
+ },
+ MinSelfDelegation: math.OneInt(),
+ }
+
+ validator, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(newVal.GetOperator())
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+
+ // Remove all validators from power store
+ stakingKey := app.GetKey(stakingtypes.ModuleName)
+ stakingStore := ctx.KVStore(stakingKey)
+ iterator, err := app.StakingKeeper.ValidatorsPowerStoreIterator(ctx)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+ for ; iterator.Valid(); iterator.Next() {
+ stakingStore.Delete(iterator.Key())
+ }
+ iterator.Close()
+
+ // Remove all valdiators from last validators store
+ iterator, err = app.StakingKeeper.LastValidatorsIterator(ctx)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+ for ; iterator.Valid(); iterator.Next() {
+ stakingStore.Delete(iterator.Key())
+ }
+ iterator.Close()
+
+ // Remove all validators from validators store
+ iterator = stakingStore.Iterator(stakingtypes.ValidatorsKey, storetypes.PrefixEndBytes(stakingtypes.ValidatorsKey))
+ for ; iterator.Valid(); iterator.Next() {
+ stakingStore.Delete(iterator.Key())
+ }
+ iterator.Close()
+
+ // Remove all validators from unbonding queue
+ iterator = stakingStore.Iterator(stakingtypes.ValidatorQueueKey, storetypes.PrefixEndBytes(stakingtypes.ValidatorQueueKey))
+ for ; iterator.Valid(); iterator.Next() {
+ stakingStore.Delete(iterator.Key())
+ }
+ iterator.Close()
+
+ // Add our validator to power and last validators store
+ app.StakingKeeper.SetValidator(ctx, newVal)
+ err = app.StakingKeeper.SetValidatorByConsAddr(ctx, newVal)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+ app.StakingKeeper.SetValidatorByPowerIndex(ctx, newVal)
+ app.StakingKeeper.SetLastValidatorPower(ctx, validator, 0)
+ if err := app.StakingKeeper.Hooks().AfterValidatorCreated(ctx, validator); err != nil {
+ tmos.Exit(err.Error())
+ }
+
+ // DISTRIBUTION
+ //
+
+ // Initialize records for this validator across all distribution stores
+ app.DistrKeeper.SetValidatorHistoricalRewards(ctx, validator, 0, distrtypes.NewValidatorHistoricalRewards(sdk.DecCoins{}, 1))
+ app.DistrKeeper.SetValidatorCurrentRewards(ctx, validator, distrtypes.NewValidatorCurrentRewards(sdk.DecCoins{}, 1))
+ app.DistrKeeper.SetValidatorAccumulatedCommission(ctx, validator, distrtypes.InitialValidatorAccumulatedCommission())
+ app.DistrKeeper.SetValidatorOutstandingRewards(ctx, validator, distrtypes.ValidatorOutstandingRewards{Rewards: sdk.DecCoins{}})
+
+
+ // SLASHING
+ //
+
+ // Set validator signing info for our new validator.
+ newConsAddr := sdk.ConsAddress(args.newValAddr.Bytes())
+ newValidatorSigningInfo := slashingtypes.ValidatorSigningInfo{
+ Address: newConsAddr.String(),
+ StartHeight: app.LastBlockHeight() - 1,
+ Tombstoned: false,
+ }
+ app.SlashingKeeper.SetValidatorSigningInfo(ctx, newConsAddr, newValidatorSigningInfo)
+
+
+ // BANK
+ //
+ bondDenom, err := app.StakingKeeper.BondDenom(ctx)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+
+ defaultCoins := sdk.NewCoins(sdk.NewInt64Coin(bondDenom, 1000000000))
+
+ // Fund local accounts
+ for _, account := range args.accountsToFund {
+ err := app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, defaultCoins)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+ err = app.BankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, account, defaultCoins)
+ if err != nil {
+ tmos.Exit(err.Error())
+ }
+ }
+
+ return app
+}
+
+
+// parse the input flags and returns valArgs
+func getCommandArgs(appOpts servertypes.AppOptions) (valArgs, error) {
+ args := valArgs{}
+
+ newValAddr, ok := appOpts.Get(server.KeyNewValAddr).(bytes.HexBytes)
+ if !ok {
+ panic("newValAddr is not of type bytes.HexBytes")
+ }
+ args.newValAddr = newValAddr
+ newValPubKey, ok := appOpts.Get(server.KeyUserPubKey).(crypto.PubKey)
+ if !ok {
+ panic("newValPubKey is not of type crypto.PubKey")
+ }
+ args.newValPubKey = newValPubKey
+ newOperatorAddress, ok := appOpts.Get(server.KeyNewOpAddr).(string)
+ if !ok {
+ panic("newOperatorAddress is not of type string")
+ }
+ args.newOperatorAddress = newOperatorAddress
+ upgradeToTrigger, ok := appOpts.Get(server.KeyTriggerTestnetUpgrade).(string)
+ if !ok {
+ panic("upgradeToTrigger is not of type string")
+ }
+ args.upgradeToTrigger = upgradeToTrigger
+
+ // validate and set accounts to fund
+ accountsString := cast.ToString(appOpts.Get(flagAccountsToFund))
+
+ for _, account := range strings.Split(accountsString, ",") {
+ if account != "" {
+ addr, err := sdk.AccAddressFromBech32(account)
+ if err != nil {
+ return args, fmt.Errorf("invalid bech32 address format %w", err)
+ }
+ args.accountsToFund = append(args.accountsToFund, addr)
+ }
+ }
+
+ // home dir
+ homeDir := cast.ToString(appOpts.Get(flags.FlagHome))
+ if homeDir == "" {
+ return args, fmt.Errorf("invalid home dir")
+ }
+ args.homeDir = homeDir
+
+ return args, nil
+}
diff --git a/electra/cmd/electrad/main.go b/electra/cmd/electrad/main.go
new file mode 100644
index 00000000..2269fda0
--- /dev/null
+++ b/electra/cmd/electrad/main.go
@@ -0,0 +1,20 @@
+package main
+
+import (
+ "fmt"
+ "os"
+
+ clienthelpers "cosmossdk.io/client/v2/helpers"
+ svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
+
+ "electra/app"
+ "electra/cmd/electrad/cmd"
+)
+
+func main() {
+ rootCmd := cmd.NewRootCmd()
+ if err := svrcmd.Execute(rootCmd, clienthelpers.EnvPrefix, app.DefaultNodeHome); err != nil {
+ fmt.Fprintln(rootCmd.OutOrStderr(), err)
+ os.Exit(1)
+ }
+}
diff --git a/electra/config.yml b/electra/config.yml
new file mode 100644
index 00000000..1bb23a65
--- /dev/null
+++ b/electra/config.yml
@@ -0,0 +1,22 @@
+version: 1
+validation: sovereign
+accounts:
+- name: alice
+ coins:
+ - 20000token
+ - 200000000stake
+- name: bob
+ coins:
+ - 10000token
+ - 100000000stake
+client:
+ openapi:
+ path: docs/static/openapi.yml
+faucet:
+ name: bob
+ coins:
+ - 5token
+ - 100000stake
+validators:
+- name: alice
+ bonded: 100000000stake
diff --git a/electra/docs/docs.go b/electra/docs/docs.go
new file mode 100644
index 00000000..cac38a13
--- /dev/null
+++ b/electra/docs/docs.go
@@ -0,0 +1,41 @@
+package docs
+
+import (
+ "embed"
+ httptemplate "html/template"
+ "net/http"
+
+ "github.com/gorilla/mux"
+)
+
+const (
+ apiFile = "/static/openapi.yml"
+ indexFile = "template/index.tpl"
+)
+
+
+//go:embed static
+var Static embed.FS
+
+//go:embed template
+var template embed.FS
+
+func RegisterOpenAPIService(appName string, rtr *mux.Router) {
+ rtr.Handle(apiFile, http.FileServer(http.FS(Static)))
+ rtr.HandleFunc("/", handler(appName))
+}
+
+// handler returns an http handler that servers OpenAPI console for an OpenAPI spec at specURL.
+func handler(title string) http.HandlerFunc {
+ t, _ := httptemplate.ParseFS(template, indexFile)
+
+ return func(w http.ResponseWriter, req *http.Request) {
+ _ = t.Execute(w, struct {
+ Title string
+ URL string
+ }{
+ title,
+ apiFile,
+ })
+ }
+}
diff --git a/electra/docs/template/index.tpl b/electra/docs/template/index.tpl
new file mode 100644
index 00000000..ec098e82
--- /dev/null
+++ b/electra/docs/template/index.tpl
@@ -0,0 +1,28 @@
+
+
+
+
+ {{ .Title }}
+
+
+
+
+
+
+
+
+
+
+Footer
+© 2022 GitHub, Inc.
+Footer navigation
diff --git a/electra/go.mod b/electra/go.mod
new file mode 100644
index 00000000..f871dcf9
--- /dev/null
+++ b/electra/go.mod
@@ -0,0 +1,50 @@
+module electra
+
+go 1.21
+
+replace (
+ // fix upstream GHSA-h395-qcrw-5vmq vulnerability.
+ github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0
+ // replace broken goleveldb
+ github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
+)
+
+require (
+ cosmossdk.io/api v0.7.5
+ cosmossdk.io/client/v2 v2.0.0-beta.5
+ cosmossdk.io/core v0.11.1
+ cosmossdk.io/depinject v1.0.0
+ cosmossdk.io/errors v1.0.1
+ cosmossdk.io/log v1.4.1
+ cosmossdk.io/math v1.3.0
+ cosmossdk.io/store v1.1.1
+ cosmossdk.io/tools/confix v0.1.2
+ cosmossdk.io/x/circuit v0.1.1
+ cosmossdk.io/x/evidence v0.1.1
+ cosmossdk.io/x/feegrant v0.1.1
+ cosmossdk.io/x/nft v0.1.0
+ cosmossdk.io/x/upgrade v0.1.4
+
+ github.com/bufbuild/buf v1.34.0
+ github.com/cometbft/cometbft v0.38.12
+ github.com/cosmos/cosmos-db v1.0.2
+ github.com/cosmos/cosmos-proto v1.0.0-beta.5
+ github.com/cosmos/cosmos-sdk v0.50.10
+ github.com/cosmos/gogoproto v1.7.0
+ github.com/cosmos/ibc-go/modules/capability v1.0.1
+ github.com/cosmos/ibc-go/v8 v8.5.1
+ github.com/golang/protobuf v1.5.4
+ github.com/gorilla/mux v1.8.1
+ github.com/grpc-ecosystem/grpc-gateway v1.16.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0
+ github.com/spf13/cast v1.6.0
+ github.com/spf13/cobra v1.8.1
+ github.com/spf13/pflag v1.0.5
+ github.com/spf13/viper v1.19.0
+ github.com/stretchr/testify v1.9.0
+ golang.org/x/tools v0.22.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d
+ google.golang.org/grpc v1.64.1
+ google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
+ google.golang.org/protobuf v1.34.2
+)
\ No newline at end of file
diff --git a/electra/proto/buf.gen.gogo.yaml b/electra/proto/buf.gen.gogo.yaml
new file mode 100644
index 00000000..8d2c1460
--- /dev/null
+++ b/electra/proto/buf.gen.gogo.yaml
@@ -0,0 +1,18 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.gogo.yaml
+#
+version: v1
+plugins:
+ - name: gocosmos
+ out: .
+ opt:
+ - plugins=grpc
+ - Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types
+ - Mcosmos/orm/v1/orm.proto=cosmossdk.io/orm
+ - name: grpc-gateway
+ out: .
+ opt:
+ - logtostderr=true
+ - allow_colon_final_segments=true
diff --git a/electra/proto/buf.gen.pulsar.yaml b/electra/proto/buf.gen.pulsar.yaml
new file mode 100644
index 00000000..f24923b8
--- /dev/null
+++ b/electra/proto/buf.gen.pulsar.yaml
@@ -0,0 +1,23 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.pulsar.yaml
+#
+version: v1
+managed:
+ enabled: true
+ go_package_prefix:
+ default: electra/api
+ except:
+ - buf.build/googleapis/googleapis
+ - buf.build/cosmos/gogo-proto
+ - buf.build/cosmos/cosmos-proto
+ override:
+ buf.build/cosmos/cosmos-sdk: cosmossdk.io/api
+plugins:
+ - name: go-pulsar
+ out: ./api
+ opt: paths=source_relative
+ - name: go-grpc
+ out: ./api
+ opt: paths=source_relative
diff --git a/electra/proto/buf.gen.sta.yaml b/electra/proto/buf.gen.sta.yaml
new file mode 100644
index 00000000..4444f5e7
--- /dev/null
+++ b/electra/proto/buf.gen.sta.yaml
@@ -0,0 +1,15 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.sta.yaml
+#
+version: v1
+plugins:
+ - name: openapiv2
+ out: .
+ opt:
+ - logtostderr=true
+ - openapi_naming_strategy=simple
+ - ignore_comments=true
+ - simple_operation_ids=false
+ - json_names_for_fields=false
diff --git a/electra/proto/buf.gen.swagger.yaml b/electra/proto/buf.gen.swagger.yaml
new file mode 100644
index 00000000..58d30d86
--- /dev/null
+++ b/electra/proto/buf.gen.swagger.yaml
@@ -0,0 +1,14 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.swagger.yaml
+#
+version: v1
+plugins:
+ - name: openapiv2
+ out: .
+ opt:
+ - logtostderr=true
+ - openapi_naming_strategy=fqn
+ - json_names_for_fields=false
+ - generate_unbound_methods=true
\ No newline at end of file
diff --git a/electra/proto/buf.gen.ts.yaml b/electra/proto/buf.gen.ts.yaml
new file mode 100644
index 00000000..c484fb3a
--- /dev/null
+++ b/electra/proto/buf.gen.ts.yaml
@@ -0,0 +1,18 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.ts.yaml
+#
+version: v1
+managed:
+ enabled: true
+plugins:
+ - plugin: buf.build/community/stephenh-ts-proto
+ out: .
+ opt:
+ - logtostderr=true
+ - allow_merge=true
+ - json_names_for_fields=false
+ - ts_proto_opt=snakeToCamel=true
+ - ts_proto_opt=esModuleInterop=true
+ - ts_proto_out=.
diff --git a/electra/proto/buf.lock b/electra/proto/buf.lock
new file mode 100644
index 00000000..8441ef4d
--- /dev/null
+++ b/electra/proto/buf.lock
@@ -0,0 +1,37 @@
+# This file is auto-generated from Ignite.
+# DO NOT EDIT
+#
+# buf.lock
+#
+version: v1
+deps:
+ - remote: buf.build
+ owner: cosmos
+ repository: cosmos-proto
+ commit: 04467658e59e44bbb22fe568206e1f70
+ digest: shake256:73a640bd60e0c523b0f8237ff34eab67c45a38b64bbbde1d80224819d272dbf316ac183526bd245f994af6608b025f5130483d0133c5edd385531326b5990466
+ - remote: buf.build
+ owner: cosmos
+ repository: cosmos-sdk
+ commit: 05419252bcc241ea8023acf1ed4cadc5
+ digest: shake256:1e54a48c19a8b59d35e0a7efa76402939f515f2d8005df099856f24c37c20a52800308f025abb8cffcd014d437b49707388aaca4865d9d063d8f25d5d4eb77d5
+ - remote: buf.build
+ owner: cosmos
+ repository: gogo-proto
+ commit: 88ef6483f90f478fb938c37dde52ece3
+ digest: shake256:89c45df2aa11e0cff97b0d695436713db3d993d76792e9f8dc1ae90e6ab9a9bec55503d48ceedd6b86069ab07d3041b32001b2bfe0227fa725dd515ff381e5ba
+ - remote: buf.build
+ owner: cosmos
+ repository: ics23
+ commit: a9ee7c290ef34ee69d3f141b9b44dcee
+ digest: shake256:255dbee3e92a370723bf4d72b34868b18e7570543f30f79c0c8c10a5a332d230175e0c29cb7ebcb8020706312e3cd37c23974df0bacfb60a4afb968fee4c1afc
+ - remote: buf.build
+ owner: googleapis
+ repository: googleapis
+ commit: 09703837a2ed48dbbbb3fdfbe6a84f5c
+ digest: shake256:de26a277fc28b8b411ecf58729d78d32fcf15090ffd998a4469225b17889bfb51442eaab04bb7a8d88d203ecdf0a9febd4ffd52c18ed1c2229160c7bd353ca95
+ - remote: buf.build
+ owner: protocolbuffers
+ repository: wellknowntypes
+ commit: 3186086b2a8e44d9acdeeef2423c5de7
+ digest: shake256:3b9dc2f56d9ed2e4001f95b701985fd803f7e2559b19b6a18d5f4e792cfdde320e765638de69fff037edc202b0006532d7ff19eab9465526b5ec628e4a5e5a1a
diff --git a/electra/proto/buf.yaml b/electra/proto/buf.yaml
new file mode 100644
index 00000000..7a86adcf
--- /dev/null
+++ b/electra/proto/buf.yaml
@@ -0,0 +1,29 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.yaml
+#
+version: v1
+deps:
+ - buf.build/protocolbuffers/wellknowntypes
+ - buf.build/cosmos/cosmos-sdk
+ - buf.build/cosmos/cosmos-proto
+ - buf.build/cosmos/gogo-proto
+ - buf.build/googleapis/googleapis
+ - buf.build/cosmos/ics23
+breaking:
+ use:
+ - FILE
+lint:
+ use:
+ - DEFAULT
+ - COMMENTS
+ - FILE_LOWER_SNAKE_CASE
+ except:
+ - UNARY_RPC
+ - COMMENT_FIELD
+ - SERVICE_SUFFIX
+ - PACKAGE_VERSION_SUFFIX
+ - RPC_REQUEST_STANDARD_NAME
+ ignore:
+ - tendermint
diff --git a/electra/readme.md b/electra/readme.md
new file mode 100644
index 00000000..791a6cd8
--- /dev/null
+++ b/electra/readme.md
@@ -0,0 +1,51 @@
+# electra
+**electra** is a blockchain built using Cosmos SDK and Tendermint and created with [Ignite CLI](https://ignite.com/cli).
+
+## Get started
+
+```
+ignite chain serve
+```
+
+`serve` command installs dependencies, builds, initializes, and starts your blockchain in development.
+
+### Configure
+
+Your blockchain in development can be configured with `config.yml`. To learn more, see the [Ignite CLI docs](https://docs.ignite.com).
+
+### Web Frontend
+
+Additionally, Ignite CLI offers both Vue and React options for frontend scaffolding:
+
+For a Vue frontend, use: `ignite scaffold vue`
+For a React frontend, use: `ignite scaffold react`
+These commands can be run within your scaffolded blockchain project.
+
+
+For more information see the [monorepo for Ignite front-end development](https://github.com/ignite/web).
+
+## Release
+To release a new version of your blockchain, create and push a new tag with `v` prefix. A new draft release with the configured targets will be created.
+
+```
+git tag v0.1
+git push origin v0.1
+```
+
+After a draft release is created, make your final changes from the release page and publish it.
+
+### Install
+To install the latest version of your blockchain node's binary, execute the following command on your machine:
+
+```
+curl https://get.ignite.com/username/electra@latest! | sudo bash
+```
+`username/electra` should match the `username` and `repo_name` of the Github repository to which the source code was pushed. Learn more about [the install process](https://github.com/allinbits/starport-installer).
+
+## Learn more
+
+- [Ignite CLI](https://ignite.com/cli)
+- [Tutorials](https://docs.ignite.com/guide)
+- [Ignite CLI docs](https://docs.ignite.com)
+- [Cosmos SDK docs](https://docs.cosmos.network)
+- [Developer Chat](https://discord.gg/ignite)
diff --git a/electra/testutil/network/network.go b/electra/testutil/network/network.go
new file mode 100644
index 00000000..3f1a38eb
--- /dev/null
+++ b/electra/testutil/network/network.go
@@ -0,0 +1,80 @@
+package network
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/cosmos/cosmos-sdk/testutil/network"
+ "github.com/stretchr/testify/require"
+
+ "electra/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 ...Config) *Network {
+ t.Helper()
+ 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)
+ _, err = net.WaitForHeight(1)
+ 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 {
+ cfg, err := network.DefaultConfigWithAppConfig(app.AppConfig())
+ if err != nil {
+ panic(err)
+ }
+ ports, err := freePorts(3)
+ if err != nil {
+ panic(err)
+ }
+ if cfg.APIAddress == "" {
+ cfg.APIAddress = fmt.Sprintf("tcp://0.0.0.0:%s", ports[0])
+ }
+ if cfg.RPCAddress == "" {
+ cfg.RPCAddress = fmt.Sprintf("tcp://0.0.0.0:%s", ports[1])
+ }
+ if cfg.GRPCAddress == "" {
+ cfg.GRPCAddress = fmt.Sprintf("0.0.0.0:%s", ports[2])
+ }
+ return cfg
+}
+
+// freePorts return the available ports based on the number of requested ports.
+func freePorts(n int) ([]string, error) {
+ closeFns := make([]func() error, n)
+ ports := make([]string, n)
+ for i := 0; i < n; i++ {
+ _, port, closeFn, err := network.FreeTCPAddr()
+ if err != nil {
+ return nil, err
+ }
+ ports[i] = port
+ closeFns[i] = closeFn
+ }
+ for _, closeFn := range closeFns {
+ if err := closeFn(); err != nil {
+ return nil, err
+ }
+ }
+ return ports, nil
+}
diff --git a/electra/testutil/nullify/nullify.go b/electra/testutil/nullify/nullify.go
new file mode 100644
index 00000000..3b968c09
--- /dev/null
+++ b/electra/testutil/nullify/nullify.go
@@ -0,0 +1,57 @@
+// Package nullify provides methods to init nil values structs for test assertion.
+package nullify
+
+import (
+ "reflect"
+ "unsafe"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+)
+
+var (
+ coinType = reflect.TypeOf(sdk.Coin{})
+ coinsType = reflect.TypeOf(sdk.Coins{})
+)
+
+// Fill analyze all struct fields and slices with
+// reflection and initialize the nil and empty slices,
+// structs, and pointers.
+func Fill(x interface{}) interface{} {
+ v := reflect.Indirect(reflect.ValueOf(x))
+ switch v.Kind() {
+ case reflect.Slice:
+ for i := 0; i < v.Len(); i++ {
+ obj := v.Index(i)
+ objPt := reflect.NewAt(obj.Type(), unsafe.Pointer(obj.UnsafeAddr())).Interface()
+ objPt = Fill(objPt)
+ obj.Set(reflect.ValueOf(objPt))
+ }
+ case reflect.Struct:
+ for i := 0; i < v.NumField(); i++ {
+ f := reflect.Indirect(v.Field(i))
+ if !f.CanSet() {
+ continue
+ }
+ switch f.Kind() {
+ case reflect.Slice:
+ f.Set(reflect.MakeSlice(f.Type(), 0, 0))
+ case reflect.Struct:
+ switch f.Type() {
+ case coinType:
+ coin := reflect.New(coinType).Interface()
+ s := reflect.ValueOf(coin).Elem()
+ f.Set(s)
+ case coinsType:
+ coins := reflect.New(coinsType).Interface()
+ s := reflect.ValueOf(coins).Elem()
+ f.Set(s)
+ default:
+ objPt := reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Interface()
+ s := Fill(objPt)
+ f.Set(reflect.ValueOf(s))
+ }
+ }
+ }
+ }
+ return reflect.Indirect(v).Interface()
+}
diff --git a/electra/testutil/sample/sample.go b/electra/testutil/sample/sample.go
new file mode 100644
index 00000000..98f2153e
--- /dev/null
+++ b/electra/testutil/sample/sample.go
@@ -0,0 +1,13 @@
+package sample
+
+import (
+ "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+)
+
+// AccAddress returns a sample account address
+func AccAddress() string {
+ pk := ed25519.GenPrivKey().PubKey()
+ addr := pk.Address()
+ return sdk.AccAddress(addr).String()
+}
diff --git a/electra/tools/tools.go b/electra/tools/tools.go
new file mode 100644
index 00000000..e668aaa9
--- /dev/null
+++ b/electra/tools/tools.go
@@ -0,0 +1,14 @@
+//go:build tools
+
+package tools
+
+import (
+ _ "github.com/bufbuild/buf/cmd/buf"
+ _ "github.com/cosmos/gogoproto/protoc-gen-gocosmos"
+ _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
+ _ "google.golang.org/protobuf/cmd/protoc-gen-go"
+ _ "github.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar"
+ _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway"
+ _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
+ _ "golang.org/x/tools/cmd/goimports"
+)
diff --git a/go.mod b/go.mod
index dab3afc1..a4e151af 100644
--- a/go.mod
+++ b/go.mod
@@ -6,12 +6,16 @@ toolchain go1.21.4
require (
cosmossdk.io/math v1.0.0-beta.3
+ github.com/bufbuild/buf v1.8.0
+ github.com/cosmos/cosmos-proto v1.0.0-alpha7
github.com/cosmos/cosmos-sdk v0.46.3
+ github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/ibc-go/v5 v5.0.0
github.com/gogo/protobuf v1.3.3
github.com/golang/protobuf v1.5.3
github.com/google/uuid v1.6.0
github.com/grpc-ecosystem/grpc-gateway v1.16.0
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0
github.com/ignite/cli v0.25.1
github.com/spf13/cast v1.5.0
github.com/spf13/cobra v1.5.0
@@ -19,8 +23,11 @@ require (
github.com/stretchr/testify v1.8.4
github.com/tendermint/tendermint v0.34.22
github.com/tendermint/tm-db v0.6.7
+ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
google.golang.org/grpc v1.67.1
+ google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0
+ google.golang.org/protobuf v1.35.1
gopkg.in/yaml.v2 v2.4.0
)
@@ -33,6 +40,7 @@ require (
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/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect
github.com/Microsoft/go-winio v0.6.0 // indirect
github.com/Microsoft/hcsshim v0.9.6 // indirect
@@ -47,6 +55,8 @@ require (
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
+ github.com/btcsuite/btcd v0.22.1 // indirect
+ github.com/bufbuild/connect-go v0.4.0 // 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
@@ -58,13 +68,14 @@ require (
github.com/confio/ics23/go v0.7.0 // indirect
github.com/containerd/cgroups v1.0.4 // indirect
github.com/containerd/containerd v1.6.18 // indirect
+ github.com/containerd/typeurl v1.0.2 // 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.19.3 // indirect
github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect
github.com/cosmos/ledger-go v0.9.2 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.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
@@ -72,29 +83,37 @@ require (
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/distribution v2.8.1+incompatible // indirect
github.com/docker/docker v20.10.24+incompatible // indirect
+ github.com/docker/go-connections v0.4.0 // 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 v1.5.0 // indirect
github.com/emicklei/proto v1.11.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/fatih/color v1.13.0 // indirect
- github.com/felixge/httpsnoop v1.0.1 // indirect
+ github.com/felixge/httpsnoop v1.0.2 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
+ github.com/go-chi/chi/v5 v5.0.7 // indirect
github.com/go-git/gcfg v1.5.0 // indirect
github.com/go-git/go-billy/v5 v5.3.1 // indirect
github.com/go-git/go-git/v5 v5.4.2 // indirect
github.com/go-kit/kit v0.12.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.5.1 // indirect
+ github.com/go-logr/logr v1.2.3 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
github.com/goccy/go-yaml v1.9.4 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
+ github.com/gofrs/flock v0.8.1 // indirect
+ github.com/gofrs/uuid v4.2.0+incompatible // indirect
github.com/gogo/gateway v1.1.0 // indirect
github.com/golang/glog v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.0.1 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
github.com/google/orderedcode v0.0.1 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
github.com/googleapis/gax-go/v2 v2.7.1 // indirect
@@ -118,6 +137,9 @@ require (
github.com/improbable-eng/grpc-web v0.15.0 // indirect
github.com/inconshreveable/mousetrap v1.0.1 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
+ github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a // indirect
+ github.com/jhump/protocompile v0.0.0-20220812162104-d108583e055d // indirect
+ github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/jpillora/ansi v1.0.2 // indirect
@@ -127,7 +149,7 @@ require (
github.com/jpillora/sizestr v1.0.0 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.15.11 // indirect
- github.com/kr/pretty v0.3.1 // indirect
+ github.com/klauspost/pgzip v1.2.5 // 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
@@ -141,8 +163,11 @@ require (
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
+ github.com/moby/buildkit v0.10.3 // indirect
github.com/moby/sys/mount v0.3.1 // indirect
github.com/moby/sys/mountinfo v0.6.0 // indirect
+ github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae // indirect
+ github.com/morikuni/aec v1.0.0 // indirect
github.com/mtibben/percent v0.2.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect
@@ -151,7 +176,9 @@ require (
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
+ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
github.com/pkg/errors v0.9.1 // indirect
+ github.com/pkg/profile v1.6.0 // 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
@@ -161,8 +188,10 @@ require (
github.com/rakyll/statik v0.1.7 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/regen-network/cosmos-proto v0.3.1 // indirect
+ github.com/rogpeppe/go-internal v1.9.0 // indirect
github.com/rs/cors v1.8.2 // indirect
github.com/rs/zerolog v1.27.0 // indirect
+ github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sasha-s/go-deadlock v0.3.1 // indirect
github.com/sergi/go-diff v1.2.0 // indirect
github.com/sirupsen/logrus v1.9.0 // indirect
@@ -182,6 +211,12 @@ require (
github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
go.opencensus.io v0.24.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.34.0 // indirect
+ go.opentelemetry.io/otel v1.9.0 // indirect
+ go.opentelemetry.io/otel/trace v1.9.0 // indirect
+ go.uber.org/atomic v1.10.0 // indirect
+ go.uber.org/multierr v1.8.0 // indirect
+ go.uber.org/zap v1.22.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
golang.org/x/mod v0.17.0 // indirect
@@ -191,11 +226,9 @@ require (
golang.org/x/sys v0.24.0 // indirect
golang.org/x/term v0.23.0 // indirect
golang.org/x/text v0.19.0 // indirect
- golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.114.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/protobuf v1.35.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 677bf4d4..261b628e 100644
--- a/go.sum
+++ b/go.sum
@@ -322,6 +322,8 @@ github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7
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/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
+github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
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=
@@ -348,6 +350,7 @@ 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=
@@ -363,6 +366,10 @@ 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/bufbuild/buf v1.8.0 h1:53qJ3QY/KOHwSjWgCQYkQaR3jGWst7aOfTXnFe8e+VQ=
+github.com/bufbuild/buf v1.8.0/go.mod h1:tBzKkd1fzCcBV6KKSO7zo3rlhk3o1YQ0F2tQKSC2aNU=
+github.com/bufbuild/connect-go v0.4.0 h1:fIMyUYG8mXSTH+nnlOx9KmRUf3mBF0R2uKK+BQBoOHE=
+github.com/bufbuild/connect-go v0.4.0/go.mod h1:ZEtBnQ7J/m7bvWOW+H8T/+hKQCzPVfhhhICuvtcnjlI=
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=
@@ -415,6 +422,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
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-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
+github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg=
+github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
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=
@@ -503,6 +512,7 @@ github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Ev
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 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=
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=
@@ -545,6 +555,8 @@ github.com/cosmos/cosmos-sdk/ics23/go v0.8.0/go.mod h1:2a4dBq88TUoqoWAU5eu0lGvpF
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/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
+github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
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.19.3 h1:cESO0OwTTxQm5rmyESKW+zESheDUYI7CcZDWWDwnuxg=
@@ -558,11 +570,14 @@ 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.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
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/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
+github.com/creack/pty v1.1.11/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=
@@ -607,6 +622,8 @@ github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop
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/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
+github.com/docker/distribution v2.8.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.24+incompatible h1:Ugvxm7a8+Gz6vqQYQQ2W7GYq5EUPaAiuPgIfVyI3dYE=
@@ -655,6 +672,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m
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 v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM=
+github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
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=
@@ -667,8 +686,9 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
github.com/fatih/color v1.10.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/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
+github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
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=
@@ -702,6 +722,8 @@ github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev
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-chi/chi/v5 v5.0.7 h1:rDTPXLDHGATaeHvVlLcR4Qe0zftYethFucbjVQ1PxU8=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
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.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
@@ -731,6 +753,11 @@ github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNV
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-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
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=
@@ -772,7 +799,11 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6
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/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
+github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
+github.com/gofrs/uuid v4.2.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/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
@@ -935,6 +966,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s=
@@ -1026,10 +1059,18 @@ github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6t
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/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a h1:d4+I1YEKVmWZrgkt6jpXBnLgV2ZjO0YxEtLDdfIZfH4=
+github.com/jdxcode/netrc v0.0.0-20210204082910-926c7f70242a/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw=
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/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI=
+github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ=
+github.com/jhump/protocompile v0.0.0-20220812162104-d108583e055d h1:1BLWxsvcb5w9/vGjtyEo//r3dwEPNg7z73nbQ/XV4/s=
+github.com/jhump/protocompile v0.0.0-20220812162104-d108583e055d/go.mod h1:qr2b5kx4HbFS7/g4uYO5qv9ei8303JMsC7ESbYiqr2Q=
+github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E=
github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98=
github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
@@ -1088,6 +1129,8 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD
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/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
+github.com/klauspost/pgzip v1.2.5/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=
@@ -1188,6 +1231,8 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
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/buildkit v0.10.3 h1:/dGykD8FW+H4p++q5+KqKEo6gAkYKyBQHdawdjVwVAU=
+github.com/moby/buildkit v0.10.3/go.mod h1:jxeOuly98l9gWHai0Ojrbnczrk/rf+o9/JqNhY+UCSo=
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=
@@ -1198,6 +1243,8 @@ github.com/moby/sys/mountinfo v0.6.0 h1:gUDhXQx58YNrpHlK4nSL+7y2pxFZkUcXqzFDKWdC
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/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI=
+github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw=
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=
@@ -1206,6 +1253,7 @@ 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 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
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=
@@ -1330,13 +1378,16 @@ github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG
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/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
+github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
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/profile v1.6.0 h1:hUDfIISABYI59DyeB3OTay/HxSRwTQ8rB/H83k6r5dM=
+github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18=
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=
@@ -1420,6 +1471,7 @@ 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 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
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/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4=
@@ -1618,16 +1670,31 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.34.0 h1:PNEMW4EvpNQ7SuoPFNkvbZqi1STkTPKq+8vfoMl/6AE=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.34.0/go.mod h1:fk1+icoN47ytLSgkoWHLJrtVTSQ+HgmkNgPTKrk/Nsc=
+go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
+go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
+go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
+go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
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.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
+go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
+go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
+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.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
+go.uber.org/multierr v1.8.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.22.0 h1:Zcye5DUgBloQ9BaT4qc9BnjOFog5TvBSAGkJ3Nf70c0=
+go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U=
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=
@@ -1928,6 +1995,7 @@ golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1990,6 +2058,8 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb
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/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
+golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/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=
@@ -2302,6 +2372,7 @@ google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
+google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=
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=
@@ -2315,6 +2386,7 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
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.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/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
diff --git a/proto/buf.gen.gogo.yaml b/proto/buf.gen.gogo.yaml
new file mode 100644
index 00000000..8d2c1460
--- /dev/null
+++ b/proto/buf.gen.gogo.yaml
@@ -0,0 +1,18 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.gogo.yaml
+#
+version: v1
+plugins:
+ - name: gocosmos
+ out: .
+ opt:
+ - plugins=grpc
+ - Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types
+ - Mcosmos/orm/v1/orm.proto=cosmossdk.io/orm
+ - name: grpc-gateway
+ out: .
+ opt:
+ - logtostderr=true
+ - allow_colon_final_segments=true
diff --git a/proto/buf.gen.pulsar.yaml.plush b/proto/buf.gen.pulsar.yaml.plush
new file mode 100644
index 00000000..b128e940
--- /dev/null
+++ b/proto/buf.gen.pulsar.yaml.plush
@@ -0,0 +1,23 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.pulsar.yaml
+#
+version: v1
+managed:
+ enabled: true
+ go_package_prefix:
+ default: <%= ModulePath %>/api
+ except:
+ - buf.build/googleapis/googleapis
+ - buf.build/cosmos/gogo-proto
+ - buf.build/cosmos/cosmos-proto
+ override:
+ buf.build/cosmos/cosmos-sdk: cosmossdk.io/api
+plugins:
+ - name: go-pulsar
+ out: ./api
+ opt: paths=source_relative
+ - name: go-grpc
+ out: ./api
+ opt: paths=source_relative
diff --git a/proto/buf.gen.sta.yaml b/proto/buf.gen.sta.yaml
new file mode 100644
index 00000000..4444f5e7
--- /dev/null
+++ b/proto/buf.gen.sta.yaml
@@ -0,0 +1,15 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.sta.yaml
+#
+version: v1
+plugins:
+ - name: openapiv2
+ out: .
+ opt:
+ - logtostderr=true
+ - openapi_naming_strategy=simple
+ - ignore_comments=true
+ - simple_operation_ids=false
+ - json_names_for_fields=false
diff --git a/proto/buf.gen.swagger.yaml b/proto/buf.gen.swagger.yaml
new file mode 100644
index 00000000..58d30d86
--- /dev/null
+++ b/proto/buf.gen.swagger.yaml
@@ -0,0 +1,14 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.swagger.yaml
+#
+version: v1
+plugins:
+ - name: openapiv2
+ out: .
+ opt:
+ - logtostderr=true
+ - openapi_naming_strategy=fqn
+ - json_names_for_fields=false
+ - generate_unbound_methods=true
\ No newline at end of file
diff --git a/proto/buf.gen.ts.yaml b/proto/buf.gen.ts.yaml
new file mode 100644
index 00000000..c484fb3a
--- /dev/null
+++ b/proto/buf.gen.ts.yaml
@@ -0,0 +1,18 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.gen.ts.yaml
+#
+version: v1
+managed:
+ enabled: true
+plugins:
+ - plugin: buf.build/community/stephenh-ts-proto
+ out: .
+ opt:
+ - logtostderr=true
+ - allow_merge=true
+ - json_names_for_fields=false
+ - ts_proto_opt=snakeToCamel=true
+ - ts_proto_opt=esModuleInterop=true
+ - ts_proto_out=.
diff --git a/proto/buf.lock b/proto/buf.lock
new file mode 100644
index 00000000..8441ef4d
--- /dev/null
+++ b/proto/buf.lock
@@ -0,0 +1,37 @@
+# This file is auto-generated from Ignite.
+# DO NOT EDIT
+#
+# buf.lock
+#
+version: v1
+deps:
+ - remote: buf.build
+ owner: cosmos
+ repository: cosmos-proto
+ commit: 04467658e59e44bbb22fe568206e1f70
+ digest: shake256:73a640bd60e0c523b0f8237ff34eab67c45a38b64bbbde1d80224819d272dbf316ac183526bd245f994af6608b025f5130483d0133c5edd385531326b5990466
+ - remote: buf.build
+ owner: cosmos
+ repository: cosmos-sdk
+ commit: 05419252bcc241ea8023acf1ed4cadc5
+ digest: shake256:1e54a48c19a8b59d35e0a7efa76402939f515f2d8005df099856f24c37c20a52800308f025abb8cffcd014d437b49707388aaca4865d9d063d8f25d5d4eb77d5
+ - remote: buf.build
+ owner: cosmos
+ repository: gogo-proto
+ commit: 88ef6483f90f478fb938c37dde52ece3
+ digest: shake256:89c45df2aa11e0cff97b0d695436713db3d993d76792e9f8dc1ae90e6ab9a9bec55503d48ceedd6b86069ab07d3041b32001b2bfe0227fa725dd515ff381e5ba
+ - remote: buf.build
+ owner: cosmos
+ repository: ics23
+ commit: a9ee7c290ef34ee69d3f141b9b44dcee
+ digest: shake256:255dbee3e92a370723bf4d72b34868b18e7570543f30f79c0c8c10a5a332d230175e0c29cb7ebcb8020706312e3cd37c23974df0bacfb60a4afb968fee4c1afc
+ - remote: buf.build
+ owner: googleapis
+ repository: googleapis
+ commit: 09703837a2ed48dbbbb3fdfbe6a84f5c
+ digest: shake256:de26a277fc28b8b411ecf58729d78d32fcf15090ffd998a4469225b17889bfb51442eaab04bb7a8d88d203ecdf0a9febd4ffd52c18ed1c2229160c7bd353ca95
+ - remote: buf.build
+ owner: protocolbuffers
+ repository: wellknowntypes
+ commit: 3186086b2a8e44d9acdeeef2423c5de7
+ digest: shake256:3b9dc2f56d9ed2e4001f95b701985fd803f7e2559b19b6a18d5f4e792cfdde320e765638de69fff037edc202b0006532d7ff19eab9465526b5ec628e4a5e5a1a
diff --git a/proto/buf.yaml b/proto/buf.yaml
new file mode 100644
index 00000000..7a86adcf
--- /dev/null
+++ b/proto/buf.yaml
@@ -0,0 +1,29 @@
+# This file is auto-generated from Ignite. You can edit
+# the file content but do not change the file name or path.
+#
+# buf.yaml
+#
+version: v1
+deps:
+ - buf.build/protocolbuffers/wellknowntypes
+ - buf.build/cosmos/cosmos-sdk
+ - buf.build/cosmos/cosmos-proto
+ - buf.build/cosmos/gogo-proto
+ - buf.build/googleapis/googleapis
+ - buf.build/cosmos/ics23
+breaking:
+ use:
+ - FILE
+lint:
+ use:
+ - DEFAULT
+ - COMMENTS
+ - FILE_LOWER_SNAKE_CASE
+ except:
+ - UNARY_RPC
+ - COMMENT_FIELD
+ - SERVICE_SUFFIX
+ - PACKAGE_VERSION_SUFFIX
+ - RPC_REQUEST_STANDARD_NAME
+ ignore:
+ - tendermint
diff --git a/tools/tools.go b/tools/tools.go
index 6e7a12d4..d697c36c 100644
--- a/tools/tools.go
+++ b/tools/tools.go
@@ -3,9 +3,14 @@
package tools
import (
+ _ "github.com/bufbuild/buf/cmd/buf"
+ _ "github.com/cosmos/cosmos-proto/cmd/protoc-gen-go-pulsar"
_ "github.com/cosmos/gogoproto/protoc-gen-gocosmos"
_ "github.com/golang/protobuf/protoc-gen-go"
_ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway"
_ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger"
_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
+ _ "golang.org/x/tools/cmd/goimports"
+ _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
+ _ "google.golang.org/protobuf/cmd/protoc-gen-go"
)
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/README.md b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/README.md
new file mode 100644
index 00000000..c8bb4282
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/README.md
@@ -0,0 +1,11 @@
+# @cosmjs/amino
+
+[](https://www.npmjs.com/package/@cosmjs/amino)
+
+Helpers for Amino for @cosmjs/stargate.
+
+## License
+
+This package is part of the cosmjs repository, licensed under the Apache License
+2.0 (see [NOTICE](https://github.com/cosmos/cosmjs/blob/main/NOTICE) and
+[LICENSE](https://github.com/cosmos/cosmjs/blob/main/LICENSE)).
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.d.ts
new file mode 100644
index 00000000..e4318417
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.d.ts
@@ -0,0 +1,5 @@
+import { Pubkey } from "./pubkeys";
+export declare function rawEd25519PubkeyToRawAddress(pubkeyData: Uint8Array): Uint8Array;
+export declare function rawSecp256k1PubkeyToRawAddress(pubkeyData: Uint8Array): Uint8Array;
+export declare function pubkeyToRawAddress(pubkey: Pubkey): Uint8Array;
+export declare function pubkeyToAddress(pubkey: Pubkey, prefix: string): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js
new file mode 100644
index 00000000..242633ca
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js
@@ -0,0 +1,47 @@
+"use strict";
+// See https://github.com/tendermint/tendermint/blob/f2ada0a604b4c0763bda2f64fac53d506d3beca7/docs/spec/blockchain/encoding.md#public-key-cryptography
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.pubkeyToAddress = exports.pubkeyToRawAddress = exports.rawSecp256k1PubkeyToRawAddress = exports.rawEd25519PubkeyToRawAddress = void 0;
+const crypto_1 = require("@cosmjs/crypto");
+const encoding_1 = require("@cosmjs/encoding");
+const encoding_2 = require("./encoding");
+const pubkeys_1 = require("./pubkeys");
+function rawEd25519PubkeyToRawAddress(pubkeyData) {
+ if (pubkeyData.length !== 32) {
+ throw new Error(`Invalid Ed25519 pubkey length: ${pubkeyData.length}`);
+ }
+ return (0, crypto_1.sha256)(pubkeyData).slice(0, 20);
+}
+exports.rawEd25519PubkeyToRawAddress = rawEd25519PubkeyToRawAddress;
+function rawSecp256k1PubkeyToRawAddress(pubkeyData) {
+ if (pubkeyData.length !== 33) {
+ throw new Error(`Invalid Secp256k1 pubkey length (compressed): ${pubkeyData.length}`);
+ }
+ return (0, crypto_1.ripemd160)((0, crypto_1.sha256)(pubkeyData));
+}
+exports.rawSecp256k1PubkeyToRawAddress = rawSecp256k1PubkeyToRawAddress;
+// For secp256k1 this assumes we already have a compressed pubkey.
+function pubkeyToRawAddress(pubkey) {
+ if ((0, pubkeys_1.isSecp256k1Pubkey)(pubkey)) {
+ const pubkeyData = (0, encoding_1.fromBase64)(pubkey.value);
+ return rawSecp256k1PubkeyToRawAddress(pubkeyData);
+ }
+ else if ((0, pubkeys_1.isEd25519Pubkey)(pubkey)) {
+ const pubkeyData = (0, encoding_1.fromBase64)(pubkey.value);
+ return rawEd25519PubkeyToRawAddress(pubkeyData);
+ }
+ else if ((0, pubkeys_1.isMultisigThresholdPubkey)(pubkey)) {
+ // https://github.com/tendermint/tendermint/blob/38b401657e4ad7a7eeb3c30a3cbf512037df3740/crypto/multisig/threshold_pubkey.go#L71-L74
+ const pubkeyData = (0, encoding_2.encodeAminoPubkey)(pubkey);
+ return (0, crypto_1.sha256)(pubkeyData).slice(0, 20);
+ }
+ else {
+ throw new Error("Unsupported public key type");
+ }
+}
+exports.pubkeyToRawAddress = pubkeyToRawAddress;
+function pubkeyToAddress(pubkey, prefix) {
+ return (0, encoding_1.toBech32)(prefix, pubkeyToRawAddress(pubkey));
+}
+exports.pubkeyToAddress = pubkeyToAddress;
+//# sourceMappingURL=addresses.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js.map
new file mode 100644
index 00000000..65633211
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/addresses.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../src/addresses.ts"],"names":[],"mappings":";AAAA,sJAAsJ;;;AAEtJ,2CAAmD;AACnD,+CAAwD;AAExD,yCAA+C;AAC/C,uCAAkG;AAElG,SAAgB,4BAA4B,CAAC,UAAsB;IACjE,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;KACxE;IACD,OAAO,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AALD,oEAKC;AAED,SAAgB,8BAA8B,CAAC,UAAsB;IACnE,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;KACvF;IACD,OAAO,IAAA,kBAAS,EAAC,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,CAAC;AACvC,CAAC;AALD,wEAKC;AAED,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,IAAI,IAAA,2BAAiB,EAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,8BAA8B,CAAC,UAAU,CAAC,CAAC;KACnD;SAAM,IAAI,IAAA,yBAAe,EAAC,MAAM,CAAC,EAAE;QAClC,MAAM,UAAU,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,4BAA4B,CAAC,UAAU,CAAC,CAAC;KACjD;SAAM,IAAI,IAAA,mCAAyB,EAAC,MAAM,CAAC,EAAE;QAC5C,qIAAqI;QACrI,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACxC;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;AACH,CAAC;AAdD,gDAcC;AAED,SAAgB,eAAe,CAAC,MAAc,EAAE,MAAc;IAC5D,OAAO,IAAA,mBAAQ,EAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAFD,0CAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.d.ts
new file mode 100644
index 00000000..8eb69644
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.d.ts
@@ -0,0 +1,34 @@
+export interface Coin {
+ readonly denom: string;
+ readonly amount: string;
+}
+/**
+ * Creates a coin.
+ *
+ * If your values do not exceed the safe integer range of JS numbers (53 bit),
+ * you can use the number type here. This is the case for all typical Cosmos SDK
+ * chains that use the default 6 decimals.
+ *
+ * In case you need to supportr larger values, use unsigned integer strings instead.
+ */
+export declare function coin(amount: number | string, denom: string): Coin;
+/**
+ * Creates a list of coins with one element.
+ */
+export declare function coins(amount: number | string, denom: string): Coin[];
+/**
+ * Takes a coins list like "819966000ucosm,700000000ustake" and parses it.
+ *
+ * A Stargate-ready variant of this function is available via:
+ *
+ * ```
+ * import { parseCoins } from "@cosmjs/proto-signing";
+ * // or
+ * import { parseCoins } from "@cosmjs/stargate";
+ * ```
+ */
+export declare function parseCoins(input: string): Coin[];
+/**
+ * Function to sum up coins with type Coin
+ */
+export declare function addCoins(lhs: Coin, rhs: Coin): Coin;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js
new file mode 100644
index 00000000..5b04dc76
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js
@@ -0,0 +1,82 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.addCoins = exports.parseCoins = exports.coins = exports.coin = void 0;
+const math_1 = require("@cosmjs/math");
+/**
+ * Creates a coin.
+ *
+ * If your values do not exceed the safe integer range of JS numbers (53 bit),
+ * you can use the number type here. This is the case for all typical Cosmos SDK
+ * chains that use the default 6 decimals.
+ *
+ * In case you need to supportr larger values, use unsigned integer strings instead.
+ */
+function coin(amount, denom) {
+ let outAmount;
+ if (typeof amount === "number") {
+ try {
+ outAmount = new math_1.Uint53(amount).toString();
+ }
+ catch (_err) {
+ throw new Error("Given amount is not a safe integer. Consider using a string instead to overcome the limitations of JS numbers.");
+ }
+ }
+ else {
+ if (!amount.match(/^[0-9]+$/)) {
+ throw new Error("Invalid unsigned integer string format");
+ }
+ outAmount = amount.replace(/^0*/, "") || "0";
+ }
+ return {
+ amount: outAmount,
+ denom: denom,
+ };
+}
+exports.coin = coin;
+/**
+ * Creates a list of coins with one element.
+ */
+function coins(amount, denom) {
+ return [coin(amount, denom)];
+}
+exports.coins = coins;
+/**
+ * Takes a coins list like "819966000ucosm,700000000ustake" and parses it.
+ *
+ * A Stargate-ready variant of this function is available via:
+ *
+ * ```
+ * import { parseCoins } from "@cosmjs/proto-signing";
+ * // or
+ * import { parseCoins } from "@cosmjs/stargate";
+ * ```
+ */
+function parseCoins(input) {
+ return input
+ .replace(/\s/g, "")
+ .split(",")
+ .filter(Boolean)
+ .map((part) => {
+ const match = part.match(/^([0-9]+)([a-zA-Z]+)/);
+ if (!match)
+ throw new Error("Got an invalid coin string");
+ return {
+ amount: match[1].replace(/^0+/, "") || "0",
+ denom: match[2],
+ };
+ });
+}
+exports.parseCoins = parseCoins;
+/**
+ * Function to sum up coins with type Coin
+ */
+function addCoins(lhs, rhs) {
+ if (lhs.denom !== rhs.denom)
+ throw new Error("Trying to add two coins with different denoms");
+ return {
+ amount: math_1.Decimal.fromAtomics(lhs.amount, 0).plus(math_1.Decimal.fromAtomics(rhs.amount, 0)).atomics,
+ denom: lhs.denom,
+ };
+}
+exports.addCoins = addCoins;
+//# sourceMappingURL=coins.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js.map
new file mode 100644
index 00000000..0be95ea3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/coins.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"coins.js","sourceRoot":"","sources":["../src/coins.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAO/C;;;;;;;;GAQG;AACH,SAAgB,IAAI,CAAC,MAAuB,EAAE,KAAa;IACzD,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI;YACF,SAAS,GAAG,IAAI,aAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC3C;QAAC,OAAO,IAAI,EAAE;YACb,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;SACH;KACF;SAAM;QACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QACD,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;KAC9C;IACD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC;AApBD,oBAoBC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,MAAuB,EAAE,KAAa;IAC1D,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/B,CAAC;AAFD,sBAEC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC1D,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG;YAC1C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAbD,gCAaC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,GAAS,EAAE,GAAS;IAC3C,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC9F,OAAO;QACL,MAAM,EAAE,cAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;QAC3F,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;AACJ,CAAC;AAND,4BAMC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.d.ts
new file mode 100644
index 00000000..fc8b5041
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.d.ts
@@ -0,0 +1,33 @@
+import { Ed25519Pubkey, Pubkey, Secp256k1Pubkey } from "./pubkeys";
+/**
+ * Takes a Secp256k1 public key as raw bytes and returns the Amino JSON
+ * representation of it (the type/value wrapper object).
+ */
+export declare function encodeSecp256k1Pubkey(pubkey: Uint8Array): Secp256k1Pubkey;
+/**
+ * Takes an Edd25519 public key as raw bytes and returns the Amino JSON
+ * representation of it (the type/value wrapper object).
+ */
+export declare function encodeEd25519Pubkey(pubkey: Uint8Array): Ed25519Pubkey;
+/**
+ * Decodes a pubkey in the Amino binary format to a type/value object.
+ */
+export declare function decodeAminoPubkey(data: Uint8Array): Pubkey;
+/**
+ * Decodes a bech32 pubkey to Amino binary, which is then decoded to a type/value object.
+ * The bech32 prefix is ignored and discareded.
+ *
+ * @param bechEncoded the bech32 encoded pubkey
+ */
+export declare function decodeBech32Pubkey(bechEncoded: string): Pubkey;
+/**
+ * Encodes a public key to binary Amino.
+ */
+export declare function encodeAminoPubkey(pubkey: Pubkey): Uint8Array;
+/**
+ * Encodes a public key to binary Amino and then to bech32.
+ *
+ * @param pubkey the public key to encode
+ * @param prefix the bech32 prefix (human readable part)
+ */
+export declare function encodeBech32Pubkey(pubkey: Pubkey, prefix: string): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js
new file mode 100644
index 00000000..477c2509
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js
@@ -0,0 +1,208 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.encodeBech32Pubkey = exports.encodeAminoPubkey = exports.decodeBech32Pubkey = exports.decodeAminoPubkey = exports.encodeEd25519Pubkey = exports.encodeSecp256k1Pubkey = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+const math_1 = require("@cosmjs/math");
+const utils_1 = require("@cosmjs/utils");
+const pubkeys_1 = require("./pubkeys");
+/**
+ * Takes a Secp256k1 public key as raw bytes and returns the Amino JSON
+ * representation of it (the type/value wrapper object).
+ */
+function encodeSecp256k1Pubkey(pubkey) {
+ if (pubkey.length !== 33 || (pubkey[0] !== 0x02 && pubkey[0] !== 0x03)) {
+ throw new Error("Public key must be compressed secp256k1, i.e. 33 bytes starting with 0x02 or 0x03");
+ }
+ return {
+ type: pubkeys_1.pubkeyType.secp256k1,
+ value: (0, encoding_1.toBase64)(pubkey),
+ };
+}
+exports.encodeSecp256k1Pubkey = encodeSecp256k1Pubkey;
+/**
+ * Takes an Edd25519 public key as raw bytes and returns the Amino JSON
+ * representation of it (the type/value wrapper object).
+ */
+function encodeEd25519Pubkey(pubkey) {
+ if (pubkey.length !== 32) {
+ throw new Error("Ed25519 public key must be 32 bytes long");
+ }
+ return {
+ type: pubkeys_1.pubkeyType.ed25519,
+ value: (0, encoding_1.toBase64)(pubkey),
+ };
+}
+exports.encodeEd25519Pubkey = encodeEd25519Pubkey;
+// As discussed in https://github.com/binance-chain/javascript-sdk/issues/163
+// Prefixes listed here: https://github.com/tendermint/tendermint/blob/d419fffe18531317c28c29a292ad7d253f6cafdf/docs/spec/blockchain/encoding.md#public-key-cryptography
+// Last bytes is varint-encoded length prefix
+const pubkeyAminoPrefixSecp256k1 = (0, encoding_1.fromHex)("eb5ae987" + "21" /* fixed length */);
+const pubkeyAminoPrefixEd25519 = (0, encoding_1.fromHex)("1624de64" + "20" /* fixed length */);
+const pubkeyAminoPrefixSr25519 = (0, encoding_1.fromHex)("0dfb1005" + "20" /* fixed length */);
+/** See https://github.com/tendermint/tendermint/commit/38b401657e4ad7a7eeb3c30a3cbf512037df3740 */
+const pubkeyAminoPrefixMultisigThreshold = (0, encoding_1.fromHex)("22c1f7e2" /* variable length not included */);
+/**
+ * Decodes a pubkey in the Amino binary format to a type/value object.
+ */
+function decodeAminoPubkey(data) {
+ if ((0, utils_1.arrayContentStartsWith)(data, pubkeyAminoPrefixSecp256k1)) {
+ const rest = data.slice(pubkeyAminoPrefixSecp256k1.length);
+ if (rest.length !== 33) {
+ throw new Error("Invalid rest data length. Expected 33 bytes (compressed secp256k1 pubkey).");
+ }
+ return {
+ type: pubkeys_1.pubkeyType.secp256k1,
+ value: (0, encoding_1.toBase64)(rest),
+ };
+ }
+ else if ((0, utils_1.arrayContentStartsWith)(data, pubkeyAminoPrefixEd25519)) {
+ const rest = data.slice(pubkeyAminoPrefixEd25519.length);
+ if (rest.length !== 32) {
+ throw new Error("Invalid rest data length. Expected 32 bytes (Ed25519 pubkey).");
+ }
+ return {
+ type: pubkeys_1.pubkeyType.ed25519,
+ value: (0, encoding_1.toBase64)(rest),
+ };
+ }
+ else if ((0, utils_1.arrayContentStartsWith)(data, pubkeyAminoPrefixSr25519)) {
+ const rest = data.slice(pubkeyAminoPrefixSr25519.length);
+ if (rest.length !== 32) {
+ throw new Error("Invalid rest data length. Expected 32 bytes (Sr25519 pubkey).");
+ }
+ return {
+ type: pubkeys_1.pubkeyType.sr25519,
+ value: (0, encoding_1.toBase64)(rest),
+ };
+ }
+ else if ((0, utils_1.arrayContentStartsWith)(data, pubkeyAminoPrefixMultisigThreshold)) {
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
+ return decodeMultisigPubkey(data);
+ }
+ else {
+ throw new Error("Unsupported public key type. Amino data starts with: " + (0, encoding_1.toHex)(data.slice(0, 5)));
+ }
+}
+exports.decodeAminoPubkey = decodeAminoPubkey;
+/**
+ * Decodes a bech32 pubkey to Amino binary, which is then decoded to a type/value object.
+ * The bech32 prefix is ignored and discareded.
+ *
+ * @param bechEncoded the bech32 encoded pubkey
+ */
+function decodeBech32Pubkey(bechEncoded) {
+ const { data } = (0, encoding_1.fromBech32)(bechEncoded);
+ return decodeAminoPubkey(data);
+}
+exports.decodeBech32Pubkey = decodeBech32Pubkey;
+/**
+ * Uvarint decoder for Amino.
+ * @see https://github.com/tendermint/go-amino/blob/8e779b71f40d175/decoder.go#L64-76
+ * @returns varint as number, and bytes count occupied by varaint
+ */
+function decodeUvarint(reader) {
+ if (reader.length < 1) {
+ throw new Error("Can't decode varint. EOF");
+ }
+ if (reader[0] > 127) {
+ throw new Error("Decoding numbers > 127 is not supported here. Please tell those lazy CosmJS maintainers to port the binary.Varint implementation from the Go standard library and write some tests.");
+ }
+ return [reader[0], 1];
+}
+/**
+ * Decodes a multisig pubkey to type object.
+ * Pubkey structure [ prefix + const + threshold + loop:(const + pubkeyLength + pubkey ) ]
+ * [ 4b + 1b + varint + loop:(1b + varint + pubkeyLength bytes) ]
+ * @param data encoded pubkey
+ */
+function decodeMultisigPubkey(data) {
+ const reader = Array.from(data);
+ // remove multisig amino prefix;
+ const prefixFromReader = reader.splice(0, pubkeyAminoPrefixMultisigThreshold.length);
+ if (!(0, utils_1.arrayContentStartsWith)(prefixFromReader, pubkeyAminoPrefixMultisigThreshold)) {
+ throw new Error("Invalid multisig prefix.");
+ }
+ // remove 0x08 threshold prefix;
+ if (reader.shift() != 0x08) {
+ throw new Error("Invalid multisig data. Expecting 0x08 prefix before threshold.");
+ }
+ // read threshold
+ const [threshold, thresholdBytesLength] = decodeUvarint(reader);
+ reader.splice(0, thresholdBytesLength);
+ // read participants pubkeys
+ const pubkeys = [];
+ while (reader.length > 0) {
+ // remove 0x12 threshold prefix;
+ if (reader.shift() != 0x12) {
+ throw new Error("Invalid multisig data. Expecting 0x12 prefix before participant pubkey length.");
+ }
+ // read pubkey length
+ const [pubkeyLength, pubkeyLengthBytesSize] = decodeUvarint(reader);
+ reader.splice(0, pubkeyLengthBytesSize);
+ // verify that we can read pubkey
+ if (reader.length < pubkeyLength) {
+ throw new Error("Invalid multisig data length.");
+ }
+ // read and decode participant pubkey
+ const encodedPubkey = reader.splice(0, pubkeyLength);
+ const pubkey = decodeAminoPubkey(Uint8Array.from(encodedPubkey));
+ pubkeys.push(pubkey);
+ }
+ return {
+ type: pubkeys_1.pubkeyType.multisigThreshold,
+ value: {
+ threshold: threshold.toString(),
+ pubkeys: pubkeys,
+ },
+ };
+}
+/**
+ * Uvarint encoder for Amino. This is the same encoding as `binary.PutUvarint` from the Go
+ * standard library.
+ *
+ * @see https://github.com/tendermint/go-amino/blob/8e779b71f40d175/encoder.go#L77-L85
+ */
+function encodeUvarint(value) {
+ const checked = math_1.Uint53.fromString(value.toString()).toNumber();
+ if (checked > 127) {
+ throw new Error("Encoding numbers > 127 is not supported here. Please tell those lazy CosmJS maintainers to port the binary.PutUvarint implementation from the Go standard library and write some tests.");
+ }
+ return [checked];
+}
+/**
+ * Encodes a public key to binary Amino.
+ */
+function encodeAminoPubkey(pubkey) {
+ if ((0, pubkeys_1.isMultisigThresholdPubkey)(pubkey)) {
+ const out = Array.from(pubkeyAminoPrefixMultisigThreshold);
+ out.push(0x08); // TODO: What is this?
+ out.push(...encodeUvarint(pubkey.value.threshold));
+ for (const pubkeyData of pubkey.value.pubkeys.map((p) => encodeAminoPubkey(p))) {
+ out.push(0x12); // TODO: What is this?
+ out.push(...encodeUvarint(pubkeyData.length));
+ out.push(...pubkeyData);
+ }
+ return new Uint8Array(out);
+ }
+ else if ((0, pubkeys_1.isEd25519Pubkey)(pubkey)) {
+ return new Uint8Array([...pubkeyAminoPrefixEd25519, ...(0, encoding_1.fromBase64)(pubkey.value)]);
+ }
+ else if ((0, pubkeys_1.isSecp256k1Pubkey)(pubkey)) {
+ return new Uint8Array([...pubkeyAminoPrefixSecp256k1, ...(0, encoding_1.fromBase64)(pubkey.value)]);
+ }
+ else {
+ throw new Error("Unsupported pubkey type");
+ }
+}
+exports.encodeAminoPubkey = encodeAminoPubkey;
+/**
+ * Encodes a public key to binary Amino and then to bech32.
+ *
+ * @param pubkey the public key to encode
+ * @param prefix the bech32 prefix (human readable part)
+ */
+function encodeBech32Pubkey(pubkey, prefix) {
+ return (0, encoding_1.toBech32)(prefix, encodeAminoPubkey(pubkey));
+}
+exports.encodeBech32Pubkey = encodeBech32Pubkey;
+//# sourceMappingURL=encoding.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js.map
new file mode 100644
index 00000000..cdfd2dfe
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/encoding.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.d.ts
new file mode 100644
index 00000000..4829bb71
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.d.ts
@@ -0,0 +1,13 @@
+export { pubkeyToAddress, pubkeyToRawAddress, rawEd25519PubkeyToRawAddress, rawSecp256k1PubkeyToRawAddress, } from "./addresses";
+export { addCoins, Coin, coin, coins, parseCoins } from "./coins";
+export { decodeAminoPubkey, decodeBech32Pubkey, encodeAminoPubkey, encodeBech32Pubkey, encodeEd25519Pubkey, encodeSecp256k1Pubkey, } from "./encoding";
+export { createMultisigThresholdPubkey } from "./multisig";
+export { makeCosmoshubPath } from "./paths";
+export { Ed25519Pubkey, isEd25519Pubkey, isMultisigThresholdPubkey, isSecp256k1Pubkey, isSinglePubkey, MultisigThresholdPubkey, Pubkey, pubkeyType, Secp256k1Pubkey, SinglePubkey, } from "./pubkeys";
+export { extractKdfConfiguration, Secp256k1HdWallet, Secp256k1HdWalletOptions } from "./secp256k1hdwallet";
+export { Secp256k1Wallet } from "./secp256k1wallet";
+export { decodeSignature, encodeSecp256k1Signature, StdSignature } from "./signature";
+export { AminoMsg, makeSignDoc, serializeSignDoc, StdFee, StdSignDoc } from "./signdoc";
+export { AccountData, Algo, AminoSignResponse, OfflineAminoSigner } from "./signer";
+export { isStdTx, makeStdTx, StdTx } from "./stdtx";
+export { executeKdf, KdfConfiguration } from "./wallet";
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js
new file mode 100644
index 00000000..be3bd91a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.executeKdf = exports.makeStdTx = exports.isStdTx = exports.serializeSignDoc = exports.makeSignDoc = exports.encodeSecp256k1Signature = exports.decodeSignature = exports.Secp256k1Wallet = exports.Secp256k1HdWallet = exports.extractKdfConfiguration = exports.pubkeyType = exports.isSinglePubkey = exports.isSecp256k1Pubkey = exports.isMultisigThresholdPubkey = exports.isEd25519Pubkey = exports.makeCosmoshubPath = exports.createMultisigThresholdPubkey = exports.encodeSecp256k1Pubkey = exports.encodeEd25519Pubkey = exports.encodeBech32Pubkey = exports.encodeAminoPubkey = exports.decodeBech32Pubkey = exports.decodeAminoPubkey = exports.parseCoins = exports.coins = exports.coin = exports.addCoins = exports.rawSecp256k1PubkeyToRawAddress = exports.rawEd25519PubkeyToRawAddress = exports.pubkeyToRawAddress = exports.pubkeyToAddress = void 0;
+var addresses_1 = require("./addresses");
+Object.defineProperty(exports, "pubkeyToAddress", { enumerable: true, get: function () { return addresses_1.pubkeyToAddress; } });
+Object.defineProperty(exports, "pubkeyToRawAddress", { enumerable: true, get: function () { return addresses_1.pubkeyToRawAddress; } });
+Object.defineProperty(exports, "rawEd25519PubkeyToRawAddress", { enumerable: true, get: function () { return addresses_1.rawEd25519PubkeyToRawAddress; } });
+Object.defineProperty(exports, "rawSecp256k1PubkeyToRawAddress", { enumerable: true, get: function () { return addresses_1.rawSecp256k1PubkeyToRawAddress; } });
+var coins_1 = require("./coins");
+Object.defineProperty(exports, "addCoins", { enumerable: true, get: function () { return coins_1.addCoins; } });
+Object.defineProperty(exports, "coin", { enumerable: true, get: function () { return coins_1.coin; } });
+Object.defineProperty(exports, "coins", { enumerable: true, get: function () { return coins_1.coins; } });
+Object.defineProperty(exports, "parseCoins", { enumerable: true, get: function () { return coins_1.parseCoins; } });
+var encoding_1 = require("./encoding");
+Object.defineProperty(exports, "decodeAminoPubkey", { enumerable: true, get: function () { return encoding_1.decodeAminoPubkey; } });
+Object.defineProperty(exports, "decodeBech32Pubkey", { enumerable: true, get: function () { return encoding_1.decodeBech32Pubkey; } });
+Object.defineProperty(exports, "encodeAminoPubkey", { enumerable: true, get: function () { return encoding_1.encodeAminoPubkey; } });
+Object.defineProperty(exports, "encodeBech32Pubkey", { enumerable: true, get: function () { return encoding_1.encodeBech32Pubkey; } });
+Object.defineProperty(exports, "encodeEd25519Pubkey", { enumerable: true, get: function () { return encoding_1.encodeEd25519Pubkey; } });
+Object.defineProperty(exports, "encodeSecp256k1Pubkey", { enumerable: true, get: function () { return encoding_1.encodeSecp256k1Pubkey; } });
+var multisig_1 = require("./multisig");
+Object.defineProperty(exports, "createMultisigThresholdPubkey", { enumerable: true, get: function () { return multisig_1.createMultisigThresholdPubkey; } });
+var paths_1 = require("./paths");
+Object.defineProperty(exports, "makeCosmoshubPath", { enumerable: true, get: function () { return paths_1.makeCosmoshubPath; } });
+var pubkeys_1 = require("./pubkeys");
+Object.defineProperty(exports, "isEd25519Pubkey", { enumerable: true, get: function () { return pubkeys_1.isEd25519Pubkey; } });
+Object.defineProperty(exports, "isMultisigThresholdPubkey", { enumerable: true, get: function () { return pubkeys_1.isMultisigThresholdPubkey; } });
+Object.defineProperty(exports, "isSecp256k1Pubkey", { enumerable: true, get: function () { return pubkeys_1.isSecp256k1Pubkey; } });
+Object.defineProperty(exports, "isSinglePubkey", { enumerable: true, get: function () { return pubkeys_1.isSinglePubkey; } });
+Object.defineProperty(exports, "pubkeyType", { enumerable: true, get: function () { return pubkeys_1.pubkeyType; } });
+var secp256k1hdwallet_1 = require("./secp256k1hdwallet");
+Object.defineProperty(exports, "extractKdfConfiguration", { enumerable: true, get: function () { return secp256k1hdwallet_1.extractKdfConfiguration; } });
+Object.defineProperty(exports, "Secp256k1HdWallet", { enumerable: true, get: function () { return secp256k1hdwallet_1.Secp256k1HdWallet; } });
+var secp256k1wallet_1 = require("./secp256k1wallet");
+Object.defineProperty(exports, "Secp256k1Wallet", { enumerable: true, get: function () { return secp256k1wallet_1.Secp256k1Wallet; } });
+var signature_1 = require("./signature");
+Object.defineProperty(exports, "decodeSignature", { enumerable: true, get: function () { return signature_1.decodeSignature; } });
+Object.defineProperty(exports, "encodeSecp256k1Signature", { enumerable: true, get: function () { return signature_1.encodeSecp256k1Signature; } });
+var signdoc_1 = require("./signdoc");
+Object.defineProperty(exports, "makeSignDoc", { enumerable: true, get: function () { return signdoc_1.makeSignDoc; } });
+Object.defineProperty(exports, "serializeSignDoc", { enumerable: true, get: function () { return signdoc_1.serializeSignDoc; } });
+var stdtx_1 = require("./stdtx");
+Object.defineProperty(exports, "isStdTx", { enumerable: true, get: function () { return stdtx_1.isStdTx; } });
+Object.defineProperty(exports, "makeStdTx", { enumerable: true, get: function () { return stdtx_1.makeStdTx; } });
+var wallet_1 = require("./wallet");
+Object.defineProperty(exports, "executeKdf", { enumerable: true, get: function () { return wallet_1.executeKdf; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js.map
new file mode 100644
index 00000000..3452c3e6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAKqB;AAJnB,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,yHAAA,4BAA4B,OAAA;AAC5B,2HAAA,8BAA8B,OAAA;AAEhC,iCAAkE;AAAzD,iGAAA,QAAQ,OAAA;AAAQ,6FAAA,IAAI,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,mGAAA,UAAU,OAAA;AAChD,uCAOoB;AANlB,6GAAA,iBAAiB,OAAA;AACjB,8GAAA,kBAAkB,OAAA;AAClB,6GAAA,iBAAiB,OAAA;AACjB,8GAAA,kBAAkB,OAAA;AAClB,+GAAA,mBAAmB,OAAA;AACnB,iHAAA,qBAAqB,OAAA;AAEvB,uCAA2D;AAAlD,yHAAA,6BAA6B,OAAA;AACtC,iCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAC1B,qCAWmB;AATjB,0GAAA,eAAe,OAAA;AACf,oHAAA,yBAAyB,OAAA;AACzB,4GAAA,iBAAiB,OAAA;AACjB,yGAAA,cAAc,OAAA;AAGd,qGAAA,UAAU,OAAA;AAIZ,yDAA2G;AAAlG,4HAAA,uBAAuB,OAAA;AAAE,sHAAA,iBAAiB,OAAA;AACnD,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yCAAsF;AAA7E,4GAAA,eAAe,OAAA;AAAE,qHAAA,wBAAwB,OAAA;AAClD,qCAAwF;AAArE,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAEhD,iCAAoD;AAA3C,gGAAA,OAAO,OAAA;AAAE,kGAAA,SAAS,OAAA;AAC3B,mCAAwD;AAA/C,oGAAA,UAAU,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.d.ts
new file mode 100644
index 00000000..524c628b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.d.ts
@@ -0,0 +1,10 @@
+import { MultisigThresholdPubkey, SinglePubkey } from "./pubkeys";
+/**
+ * Compare arrays lexicographically.
+ *
+ * Returns value < 0 if `a < b`.
+ * Returns value > 0 if `a > b`.
+ * Returns 0 if `a === b`.
+ */
+export declare function compareArrays(a: Uint8Array, b: Uint8Array): number;
+export declare function createMultisigThresholdPubkey(pubkeys: readonly SinglePubkey[], threshold: number, nosort?: boolean): MultisigThresholdPubkey;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js
new file mode 100644
index 00000000..779d9971
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js
@@ -0,0 +1,42 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createMultisigThresholdPubkey = exports.compareArrays = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+const math_1 = require("@cosmjs/math");
+const addresses_1 = require("./addresses");
+/**
+ * Compare arrays lexicographically.
+ *
+ * Returns value < 0 if `a < b`.
+ * Returns value > 0 if `a > b`.
+ * Returns 0 if `a === b`.
+ */
+function compareArrays(a, b) {
+ const aHex = (0, encoding_1.toHex)(a);
+ const bHex = (0, encoding_1.toHex)(b);
+ return aHex === bHex ? 0 : aHex < bHex ? -1 : 1;
+}
+exports.compareArrays = compareArrays;
+function createMultisigThresholdPubkey(pubkeys, threshold, nosort = false) {
+ const uintThreshold = new math_1.Uint53(threshold);
+ if (uintThreshold.toNumber() > pubkeys.length) {
+ throw new Error(`Threshold k = ${uintThreshold.toNumber()} exceeds number of keys n = ${pubkeys.length}`);
+ }
+ const outPubkeys = nosort
+ ? pubkeys
+ : Array.from(pubkeys).sort((lhs, rhs) => {
+ // https://github.com/cosmos/cosmos-sdk/blob/v0.42.2/client/keys/add.go#L172-L174
+ const addressLhs = (0, addresses_1.pubkeyToRawAddress)(lhs);
+ const addressRhs = (0, addresses_1.pubkeyToRawAddress)(rhs);
+ return compareArrays(addressLhs, addressRhs);
+ });
+ return {
+ type: "tendermint/PubKeyMultisigThreshold",
+ value: {
+ threshold: uintThreshold.toString(),
+ pubkeys: outPubkeys,
+ },
+ };
+}
+exports.createMultisigThresholdPubkey = createMultisigThresholdPubkey;
+//# sourceMappingURL=multisig.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js.map
new file mode 100644
index 00000000..c9c7e943
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/multisig.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../src/multisig.ts"],"names":[],"mappings":";;;AAAA,+CAAyC;AACzC,uCAAsC;AAEtC,2CAAiD;AAGjD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,CAAa,EAAE,CAAa;IACxD,MAAM,IAAI,GAAG,IAAA,gBAAK,EAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAA,gBAAK,EAAC,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAJD,sCAIC;AAED,SAAgB,6BAA6B,CAC3C,OAAgC,EAChC,SAAiB,EACjB,MAAM,GAAG,KAAK;IAEd,MAAM,aAAa,GAAG,IAAI,aAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,aAAa,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,iBAAiB,aAAa,CAAC,QAAQ,EAAE,+BAA+B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;KAC3G;IAED,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACpC,iFAAiF;YACjF,MAAM,UAAU,GAAG,IAAA,8BAAkB,EAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAA,8BAAkB,EAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,OAAO;QACL,IAAI,EAAE,oCAAoC;QAC1C,KAAK,EAAE;YACL,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;YACnC,OAAO,EAAE,UAAU;SACpB;KACF,CAAC;AACJ,CAAC;AAzBD,sEAyBC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.d.ts
new file mode 100644
index 00000000..cd9b31a7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.d.ts
@@ -0,0 +1,6 @@
+import { HdPath } from "@cosmjs/crypto";
+/**
+ * The Cosmos Hub derivation path in the form `m/44'/118'/0'/0/a`
+ * with 0-based account index `a`.
+ */
+export declare function makeCosmoshubPath(a: number): HdPath;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js
new file mode 100644
index 00000000..0b642f2b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeCosmoshubPath = void 0;
+const crypto_1 = require("@cosmjs/crypto");
+/**
+ * The Cosmos Hub derivation path in the form `m/44'/118'/0'/0/a`
+ * with 0-based account index `a`.
+ */
+function makeCosmoshubPath(a) {
+ return [
+ crypto_1.Slip10RawIndex.hardened(44),
+ crypto_1.Slip10RawIndex.hardened(118),
+ crypto_1.Slip10RawIndex.hardened(0),
+ crypto_1.Slip10RawIndex.normal(0),
+ crypto_1.Slip10RawIndex.normal(a),
+ ];
+}
+exports.makeCosmoshubPath = makeCosmoshubPath;
+//# sourceMappingURL=paths.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js.map
new file mode 100644
index 00000000..4b1e9c30
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/paths.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";;;AAAA,2CAAwD;AAExD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,CAAS;IACzC,OAAO;QACL,uBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,uBAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5B,uBAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,uBAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACxB,uBAAc,CAAC,MAAM,CAAC,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC;AARD,8CAQC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.d.ts
new file mode 100644
index 00000000..8fa8fa51
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.d.ts
@@ -0,0 +1,47 @@
+export interface Pubkey {
+ readonly type: string;
+ readonly value: any;
+}
+export interface Ed25519Pubkey extends SinglePubkey {
+ readonly type: "tendermint/PubKeyEd25519";
+ readonly value: string;
+}
+export declare function isEd25519Pubkey(pubkey: Pubkey): pubkey is Ed25519Pubkey;
+export interface Secp256k1Pubkey extends SinglePubkey {
+ readonly type: "tendermint/PubKeySecp256k1";
+ readonly value: string;
+}
+export declare function isSecp256k1Pubkey(pubkey: Pubkey): pubkey is Secp256k1Pubkey;
+export declare const pubkeyType: {
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/ed25519/ed25519.go#L22 */
+ secp256k1: "tendermint/PubKeySecp256k1";
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/secp256k1/secp256k1.go#L23 */
+ ed25519: "tendermint/PubKeyEd25519";
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/sr25519/codec.go#L12 */
+ sr25519: "tendermint/PubKeySr25519";
+ multisigThreshold: "tendermint/PubKeyMultisigThreshold";
+};
+/**
+ * A pubkey which contains the data directly without further nesting.
+ *
+ * You can think of this as a non-multisig pubkey.
+ */
+export interface SinglePubkey extends Pubkey {
+ readonly type: string;
+ /**
+ * The base64 encoding of the Amino binary encoded pubkey.
+ *
+ * Note: if type is Secp256k1, this must contain a 33 bytes compressed pubkey.
+ */
+ readonly value: string;
+}
+export declare function isSinglePubkey(pubkey: Pubkey): pubkey is SinglePubkey;
+export interface MultisigThresholdPubkey extends Pubkey {
+ readonly type: "tendermint/PubKeyMultisigThreshold";
+ readonly value: {
+ /** A string-encoded integer */
+ readonly threshold: string;
+ readonly pubkeys: readonly SinglePubkey[];
+ };
+}
+export declare function isMultisigThresholdPubkey(pubkey: Pubkey): pubkey is MultisigThresholdPubkey;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js
new file mode 100644
index 00000000..e9844ef8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMultisigThresholdPubkey = exports.isSinglePubkey = exports.pubkeyType = exports.isSecp256k1Pubkey = exports.isEd25519Pubkey = void 0;
+function isEd25519Pubkey(pubkey) {
+ return pubkey.type === "tendermint/PubKeyEd25519";
+}
+exports.isEd25519Pubkey = isEd25519Pubkey;
+function isSecp256k1Pubkey(pubkey) {
+ return pubkey.type === "tendermint/PubKeySecp256k1";
+}
+exports.isSecp256k1Pubkey = isSecp256k1Pubkey;
+exports.pubkeyType = {
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/ed25519/ed25519.go#L22 */
+ secp256k1: "tendermint/PubKeySecp256k1",
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/secp256k1/secp256k1.go#L23 */
+ ed25519: "tendermint/PubKeyEd25519",
+ /** @see https://github.com/tendermint/tendermint/blob/v0.33.0/crypto/sr25519/codec.go#L12 */
+ sr25519: "tendermint/PubKeySr25519",
+ multisigThreshold: "tendermint/PubKeyMultisigThreshold",
+};
+function isSinglePubkey(pubkey) {
+ const singPubkeyTypes = [exports.pubkeyType.ed25519, exports.pubkeyType.secp256k1, exports.pubkeyType.sr25519];
+ return singPubkeyTypes.includes(pubkey.type);
+}
+exports.isSinglePubkey = isSinglePubkey;
+function isMultisigThresholdPubkey(pubkey) {
+ return pubkey.type === "tendermint/PubKeyMultisigThreshold";
+}
+exports.isMultisigThresholdPubkey = isMultisigThresholdPubkey;
+//# sourceMappingURL=pubkeys.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js.map
new file mode 100644
index 00000000..40bdf782
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/pubkeys.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pubkeys.js","sourceRoot":"","sources":["../src/pubkeys.ts"],"names":[],"mappings":";;;AAaA,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAQ,MAAwB,CAAC,IAAI,KAAK,0BAA0B,CAAC;AACvE,CAAC;AAFD,0CAEC;AAOD,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAQ,MAA0B,CAAC,IAAI,KAAK,4BAA4B,CAAC;AAC3E,CAAC;AAFD,8CAEC;AAEY,QAAA,UAAU,GAAG;IACxB,+FAA+F;IAC/F,SAAS,EAAE,4BAAqC;IAChD,mGAAmG;IACnG,OAAO,EAAE,0BAAmC;IAC5C,6FAA6F;IAC7F,OAAO,EAAE,0BAAmC;IAC5C,iBAAiB,EAAE,oCAA6C;CACjE,CAAC;AAoBF,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,eAAe,GAAa,CAAC,kBAAU,CAAC,OAAO,EAAE,kBAAU,CAAC,SAAS,EAAE,kBAAU,CAAC,OAAO,CAAC,CAAC;IACjG,OAAO,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAHD,wCAGC;AAWD,SAAgB,yBAAyB,CAAC,MAAc;IACtD,OAAQ,MAAkC,CAAC,IAAI,KAAK,oCAAoC,CAAC;AAC3F,CAAC;AAFD,8DAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.d.ts
new file mode 100644
index 00000000..c1caf038
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.d.ts
@@ -0,0 +1,94 @@
+import { EnglishMnemonic, HdPath } from "@cosmjs/crypto";
+import { StdSignDoc } from "./signdoc";
+import { AccountData, AminoSignResponse, OfflineAminoSigner } from "./signer";
+import { EncryptionConfiguration, KdfConfiguration } from "./wallet";
+/**
+ * This interface describes a JSON object holding the encrypted wallet and the meta data.
+ * All fields in here must be JSON types.
+ */
+export interface Secp256k1HdWalletSerialization {
+ /** A format+version identifier for this serialization format */
+ readonly type: string;
+ /** Information about the key derivation function (i.e. password to encryption key) */
+ readonly kdf: KdfConfiguration;
+ /** Information about the symmetric encryption */
+ readonly encryption: EncryptionConfiguration;
+ /** An instance of Secp256k1HdWalletData, which is stringified, encrypted and base64 encoded. */
+ readonly data: string;
+}
+export declare function extractKdfConfiguration(serialization: string): KdfConfiguration;
+export interface Secp256k1HdWalletOptions {
+ /** The password to use when deriving a BIP39 seed from a mnemonic. */
+ readonly bip39Password: string;
+ /** The BIP-32/SLIP-10 derivation paths. Defaults to the Cosmos Hub/ATOM path `m/44'/118'/0'/0/0`. */
+ readonly hdPaths: readonly HdPath[];
+ /** The bech32 address prefix (human readable part). Defaults to "cosmos". */
+ readonly prefix: string;
+}
+interface Secp256k1HdWalletConstructorOptions extends Partial {
+ readonly seed: Uint8Array;
+}
+export declare class Secp256k1HdWallet implements OfflineAminoSigner {
+ /**
+ * Restores a wallet from the given BIP39 mnemonic.
+ *
+ * @param mnemonic Any valid English mnemonic.
+ * @param options An optional `Secp256k1HdWalletOptions` object optionally containing a bip39Password, hdPaths, and prefix.
+ */
+ static fromMnemonic(mnemonic: string, options?: Partial): Promise;
+ /**
+ * Generates a new wallet with a BIP39 mnemonic of the given length.
+ *
+ * @param length The number of words in the mnemonic (12, 15, 18, 21 or 24).
+ * @param options An optional `Secp256k1HdWalletOptions` object optionally containing a bip39Password, hdPaths, and prefix.
+ */
+ static generate(length?: 12 | 15 | 18 | 21 | 24, options?: Partial): Promise;
+ /**
+ * Restores a wallet from an encrypted serialization.
+ *
+ * @param password The user provided password used to generate an encryption key via a KDF.
+ * This is not normalized internally (see "Unicode normalization" to learn more).
+ */
+ static deserialize(serialization: string, password: string): Promise;
+ /**
+ * Restores a wallet from an encrypted serialization.
+ *
+ * This is an advanced alternative to calling `deserialize(serialization, password)` directly, which allows
+ * you to offload the KDF execution to a non-UI thread (e.g. in a WebWorker).
+ *
+ * The caller is responsible for ensuring the key was derived with the given KDF configuration. This can be
+ * done using `extractKdfConfiguration(serialization)` and `executeKdf(password, kdfConfiguration)` from this package.
+ */
+ static deserializeWithEncryptionKey(serialization: string, encryptionKey: Uint8Array): Promise;
+ private static deserializeTypeV1;
+ /** Base secret */
+ private readonly secret;
+ /** BIP39 seed */
+ private readonly seed;
+ /** Derivation instruction */
+ private readonly accounts;
+ protected constructor(mnemonic: EnglishMnemonic, options: Secp256k1HdWalletConstructorOptions);
+ get mnemonic(): string;
+ getAccounts(): Promise;
+ signAmino(signerAddress: string, signDoc: StdSignDoc): Promise;
+ /**
+ * Generates an encrypted serialization of this wallet.
+ *
+ * @param password The user provided password used to generate an encryption key via a KDF.
+ * This is not normalized internally (see "Unicode normalization" to learn more).
+ */
+ serialize(password: string): Promise;
+ /**
+ * Generates an encrypted serialization of this wallet.
+ *
+ * This is an advanced alternative to calling `serialize(password)` directly, which allows you to
+ * offload the KDF execution to a non-UI thread (e.g. in a WebWorker).
+ *
+ * The caller is responsible for ensuring the key was derived with the given KDF options. If this
+ * is not the case, the wallet cannot be restored with the original password.
+ */
+ serializeWithEncryptionKey(encryptionKey: Uint8Array, kdfConfiguration: KdfConfiguration): Promise;
+ private getKeyPair;
+ private getAccountsWithPrivkeys;
+}
+export {};
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js
new file mode 100644
index 00000000..c933ce9c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js
@@ -0,0 +1,243 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Secp256k1HdWallet = exports.extractKdfConfiguration = void 0;
+const crypto_1 = require("@cosmjs/crypto");
+const encoding_1 = require("@cosmjs/encoding");
+const utils_1 = require("@cosmjs/utils");
+const addresses_1 = require("./addresses");
+const paths_1 = require("./paths");
+const signature_1 = require("./signature");
+const signdoc_1 = require("./signdoc");
+const wallet_1 = require("./wallet");
+const serializationTypeV1 = "secp256k1wallet-v1";
+/**
+ * A KDF configuration that is not very strong but can be used on the main thread.
+ * It takes about 1 second in Node.js 16.0.0 and should have similar runtimes in other modern Wasm hosts.
+ */
+const basicPasswordHashingOptions = {
+ algorithm: "argon2id",
+ params: {
+ outputLength: 32,
+ opsLimit: 24,
+ memLimitKib: 12 * 1024,
+ },
+};
+function isDerivationJson(thing) {
+ if (!(0, utils_1.isNonNullObject)(thing))
+ return false;
+ if (typeof thing.hdPath !== "string")
+ return false;
+ if (typeof thing.prefix !== "string")
+ return false;
+ return true;
+}
+function extractKdfConfigurationV1(doc) {
+ return doc.kdf;
+}
+function extractKdfConfiguration(serialization) {
+ const root = JSON.parse(serialization);
+ if (!(0, utils_1.isNonNullObject)(root))
+ throw new Error("Root document is not an object.");
+ switch (root.type) {
+ case serializationTypeV1:
+ return extractKdfConfigurationV1(root);
+ default:
+ throw new Error("Unsupported serialization type");
+ }
+}
+exports.extractKdfConfiguration = extractKdfConfiguration;
+const defaultOptions = {
+ bip39Password: "",
+ hdPaths: [(0, paths_1.makeCosmoshubPath)(0)],
+ prefix: "cosmos",
+};
+class Secp256k1HdWallet {
+ /**
+ * Restores a wallet from the given BIP39 mnemonic.
+ *
+ * @param mnemonic Any valid English mnemonic.
+ * @param options An optional `Secp256k1HdWalletOptions` object optionally containing a bip39Password, hdPaths, and prefix.
+ */
+ static async fromMnemonic(mnemonic, options = {}) {
+ const mnemonicChecked = new crypto_1.EnglishMnemonic(mnemonic);
+ const seed = await crypto_1.Bip39.mnemonicToSeed(mnemonicChecked, options.bip39Password);
+ return new Secp256k1HdWallet(mnemonicChecked, {
+ ...options,
+ seed: seed,
+ });
+ }
+ /**
+ * Generates a new wallet with a BIP39 mnemonic of the given length.
+ *
+ * @param length The number of words in the mnemonic (12, 15, 18, 21 or 24).
+ * @param options An optional `Secp256k1HdWalletOptions` object optionally containing a bip39Password, hdPaths, and prefix.
+ */
+ static async generate(length = 12, options = {}) {
+ const entropyLength = 4 * Math.floor((11 * length) / 33);
+ const entropy = crypto_1.Random.getBytes(entropyLength);
+ const mnemonic = crypto_1.Bip39.encode(entropy);
+ return Secp256k1HdWallet.fromMnemonic(mnemonic.toString(), options);
+ }
+ /**
+ * Restores a wallet from an encrypted serialization.
+ *
+ * @param password The user provided password used to generate an encryption key via a KDF.
+ * This is not normalized internally (see "Unicode normalization" to learn more).
+ */
+ static async deserialize(serialization, password) {
+ const root = JSON.parse(serialization);
+ if (!(0, utils_1.isNonNullObject)(root))
+ throw new Error("Root document is not an object.");
+ switch (root.type) {
+ case serializationTypeV1:
+ return Secp256k1HdWallet.deserializeTypeV1(serialization, password);
+ default:
+ throw new Error("Unsupported serialization type");
+ }
+ }
+ /**
+ * Restores a wallet from an encrypted serialization.
+ *
+ * This is an advanced alternative to calling `deserialize(serialization, password)` directly, which allows
+ * you to offload the KDF execution to a non-UI thread (e.g. in a WebWorker).
+ *
+ * The caller is responsible for ensuring the key was derived with the given KDF configuration. This can be
+ * done using `extractKdfConfiguration(serialization)` and `executeKdf(password, kdfConfiguration)` from this package.
+ */
+ static async deserializeWithEncryptionKey(serialization, encryptionKey) {
+ const root = JSON.parse(serialization);
+ if (!(0, utils_1.isNonNullObject)(root))
+ throw new Error("Root document is not an object.");
+ const untypedRoot = root;
+ switch (untypedRoot.type) {
+ case serializationTypeV1: {
+ const decryptedBytes = await (0, wallet_1.decrypt)((0, encoding_1.fromBase64)(untypedRoot.data), encryptionKey, untypedRoot.encryption);
+ const decryptedDocument = JSON.parse((0, encoding_1.fromUtf8)(decryptedBytes));
+ const { mnemonic, accounts } = decryptedDocument;
+ (0, utils_1.assert)(typeof mnemonic === "string");
+ if (!Array.isArray(accounts))
+ throw new Error("Property 'accounts' is not an array");
+ if (!accounts.every((account) => isDerivationJson(account))) {
+ throw new Error("Account is not in the correct format.");
+ }
+ const firstPrefix = accounts[0].prefix;
+ if (!accounts.every(({ prefix }) => prefix === firstPrefix)) {
+ throw new Error("Accounts do not all have the same prefix");
+ }
+ const hdPaths = accounts.map(({ hdPath }) => (0, crypto_1.stringToPath)(hdPath));
+ return Secp256k1HdWallet.fromMnemonic(mnemonic, {
+ hdPaths: hdPaths,
+ prefix: firstPrefix,
+ });
+ }
+ default:
+ throw new Error("Unsupported serialization type");
+ }
+ }
+ static async deserializeTypeV1(serialization, password) {
+ const root = JSON.parse(serialization);
+ if (!(0, utils_1.isNonNullObject)(root))
+ throw new Error("Root document is not an object.");
+ const encryptionKey = await (0, wallet_1.executeKdf)(password, root.kdf);
+ return Secp256k1HdWallet.deserializeWithEncryptionKey(serialization, encryptionKey);
+ }
+ constructor(mnemonic, options) {
+ const hdPaths = options.hdPaths ?? defaultOptions.hdPaths;
+ const prefix = options.prefix ?? defaultOptions.prefix;
+ this.secret = mnemonic;
+ this.seed = options.seed;
+ this.accounts = hdPaths.map((hdPath) => ({
+ hdPath: hdPath,
+ prefix,
+ }));
+ }
+ get mnemonic() {
+ return this.secret.toString();
+ }
+ async getAccounts() {
+ const accountsWithPrivkeys = await this.getAccountsWithPrivkeys();
+ return accountsWithPrivkeys.map(({ algo, pubkey, address }) => ({
+ algo: algo,
+ pubkey: pubkey,
+ address: address,
+ }));
+ }
+ async signAmino(signerAddress, signDoc) {
+ const accounts = await this.getAccountsWithPrivkeys();
+ const account = accounts.find(({ address }) => address === signerAddress);
+ if (account === undefined) {
+ throw new Error(`Address ${signerAddress} not found in wallet`);
+ }
+ const { privkey, pubkey } = account;
+ const message = (0, crypto_1.sha256)((0, signdoc_1.serializeSignDoc)(signDoc));
+ const signature = await crypto_1.Secp256k1.createSignature(message, privkey);
+ const signatureBytes = new Uint8Array([...signature.r(32), ...signature.s(32)]);
+ return {
+ signed: signDoc,
+ signature: (0, signature_1.encodeSecp256k1Signature)(pubkey, signatureBytes),
+ };
+ }
+ /**
+ * Generates an encrypted serialization of this wallet.
+ *
+ * @param password The user provided password used to generate an encryption key via a KDF.
+ * This is not normalized internally (see "Unicode normalization" to learn more).
+ */
+ async serialize(password) {
+ const kdfConfiguration = basicPasswordHashingOptions;
+ const encryptionKey = await (0, wallet_1.executeKdf)(password, kdfConfiguration);
+ return this.serializeWithEncryptionKey(encryptionKey, kdfConfiguration);
+ }
+ /**
+ * Generates an encrypted serialization of this wallet.
+ *
+ * This is an advanced alternative to calling `serialize(password)` directly, which allows you to
+ * offload the KDF execution to a non-UI thread (e.g. in a WebWorker).
+ *
+ * The caller is responsible for ensuring the key was derived with the given KDF options. If this
+ * is not the case, the wallet cannot be restored with the original password.
+ */
+ async serializeWithEncryptionKey(encryptionKey, kdfConfiguration) {
+ const dataToEncrypt = {
+ mnemonic: this.mnemonic,
+ accounts: this.accounts.map(({ hdPath, prefix }) => ({
+ hdPath: (0, crypto_1.pathToString)(hdPath),
+ prefix: prefix,
+ })),
+ };
+ const dataToEncryptRaw = (0, encoding_1.toUtf8)(JSON.stringify(dataToEncrypt));
+ const encryptionConfiguration = {
+ algorithm: wallet_1.supportedAlgorithms.xchacha20poly1305Ietf,
+ };
+ const encryptedData = await (0, wallet_1.encrypt)(dataToEncryptRaw, encryptionKey, encryptionConfiguration);
+ const out = {
+ type: serializationTypeV1,
+ kdf: kdfConfiguration,
+ encryption: encryptionConfiguration,
+ data: (0, encoding_1.toBase64)(encryptedData),
+ };
+ return JSON.stringify(out);
+ }
+ async getKeyPair(hdPath) {
+ const { privkey } = crypto_1.Slip10.derivePath(crypto_1.Slip10Curve.Secp256k1, this.seed, hdPath);
+ const { pubkey } = await crypto_1.Secp256k1.makeKeypair(privkey);
+ return {
+ privkey: privkey,
+ pubkey: crypto_1.Secp256k1.compressPubkey(pubkey),
+ };
+ }
+ async getAccountsWithPrivkeys() {
+ return Promise.all(this.accounts.map(async ({ hdPath, prefix }) => {
+ const { privkey, pubkey } = await this.getKeyPair(hdPath);
+ const address = (0, encoding_1.toBech32)(prefix, (0, addresses_1.rawSecp256k1PubkeyToRawAddress)(pubkey));
+ return {
+ algo: "secp256k1",
+ privkey: privkey,
+ pubkey: pubkey,
+ address: address,
+ };
+ }));
+ }
+}
+exports.Secp256k1HdWallet = Secp256k1HdWallet;
+//# sourceMappingURL=secp256k1hdwallet.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js.map
new file mode 100644
index 00000000..377f5bd6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1hdwallet.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"secp256k1hdwallet.js","sourceRoot":"","sources":["../src/secp256k1hdwallet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.d.ts
new file mode 100644
index 00000000..e87da4ee
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.d.ts
@@ -0,0 +1,23 @@
+import { StdSignDoc } from "./signdoc";
+import { AccountData, AminoSignResponse, OfflineAminoSigner } from "./signer";
+/**
+ * A wallet that holds a single secp256k1 keypair.
+ *
+ * If you want to work with BIP39 mnemonics and multiple accounts, use Secp256k1HdWallet.
+ */
+export declare class Secp256k1Wallet implements OfflineAminoSigner {
+ /**
+ * Creates a Secp256k1Wallet from the given private key
+ *
+ * @param privkey The private key.
+ * @param prefix The bech32 address prefix (human readable part). Defaults to "cosmos".
+ */
+ static fromKey(privkey: Uint8Array, prefix?: string): Promise;
+ private readonly pubkey;
+ private readonly privkey;
+ private readonly prefix;
+ private constructor();
+ private get address();
+ getAccounts(): Promise;
+ signAmino(signerAddress: string, signDoc: StdSignDoc): Promise;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js
new file mode 100644
index 00000000..475d418c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js
@@ -0,0 +1,56 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Secp256k1Wallet = void 0;
+const crypto_1 = require("@cosmjs/crypto");
+const encoding_1 = require("@cosmjs/encoding");
+const addresses_1 = require("./addresses");
+const signature_1 = require("./signature");
+const signdoc_1 = require("./signdoc");
+/**
+ * A wallet that holds a single secp256k1 keypair.
+ *
+ * If you want to work with BIP39 mnemonics and multiple accounts, use Secp256k1HdWallet.
+ */
+class Secp256k1Wallet {
+ /**
+ * Creates a Secp256k1Wallet from the given private key
+ *
+ * @param privkey The private key.
+ * @param prefix The bech32 address prefix (human readable part). Defaults to "cosmos".
+ */
+ static async fromKey(privkey, prefix = "cosmos") {
+ const uncompressed = (await crypto_1.Secp256k1.makeKeypair(privkey)).pubkey;
+ return new Secp256k1Wallet(privkey, crypto_1.Secp256k1.compressPubkey(uncompressed), prefix);
+ }
+ constructor(privkey, pubkey, prefix) {
+ this.privkey = privkey;
+ this.pubkey = pubkey;
+ this.prefix = prefix;
+ }
+ get address() {
+ return (0, encoding_1.toBech32)(this.prefix, (0, addresses_1.rawSecp256k1PubkeyToRawAddress)(this.pubkey));
+ }
+ async getAccounts() {
+ return [
+ {
+ algo: "secp256k1",
+ address: this.address,
+ pubkey: this.pubkey,
+ },
+ ];
+ }
+ async signAmino(signerAddress, signDoc) {
+ if (signerAddress !== this.address) {
+ throw new Error(`Address ${signerAddress} not found in wallet`);
+ }
+ const message = new crypto_1.Sha256((0, signdoc_1.serializeSignDoc)(signDoc)).digest();
+ const signature = await crypto_1.Secp256k1.createSignature(message, this.privkey);
+ const signatureBytes = new Uint8Array([...signature.r(32), ...signature.s(32)]);
+ return {
+ signed: signDoc,
+ signature: (0, signature_1.encodeSecp256k1Signature)(this.pubkey, signatureBytes),
+ };
+ }
+}
+exports.Secp256k1Wallet = Secp256k1Wallet;
+//# sourceMappingURL=secp256k1wallet.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js.map
new file mode 100644
index 00000000..2a47d736
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/secp256k1wallet.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"secp256k1wallet.js","sourceRoot":"","sources":["../src/secp256k1wallet.ts"],"names":[],"mappings":";;;AAAA,2CAAmD;AACnD,+CAA4C;AAE5C,2CAA6D;AAC7D,2CAAuD;AACvD,uCAAyD;AAGzD;;;;GAIG;AACH,MAAa,eAAe;IAC1B;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAmB,EAAE,MAAM,GAAG,QAAQ;QAChE,MAAM,YAAY,GAAG,CAAC,MAAM,kBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACnE,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,kBAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAMD,YAAoB,OAAmB,EAAE,MAAkB,EAAE,MAAc;QACzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,MAAM,EAAE,IAAA,0CAA8B,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,OAAO;YACL;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,aAAqB,EAAE,OAAmB;QAC/D,IAAI,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,WAAW,aAAa,sBAAsB,CAAC,CAAC;SACjE;QACD,MAAM,OAAO,GAAG,IAAI,eAAM,CAAC,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,kBAAS,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO;YACL,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAA,oCAAwB,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC;SACjE,CAAC;IACJ,CAAC;CACF;AAhDD,0CAgDC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.d.ts
new file mode 100644
index 00000000..c7fff17b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.d.ts
@@ -0,0 +1,16 @@
+import { Pubkey } from "./pubkeys";
+export interface StdSignature {
+ readonly pub_key: Pubkey;
+ readonly signature: string;
+}
+/**
+ * Takes a binary pubkey and signature to create a signature object
+ *
+ * @param pubkey a compressed secp256k1 public key
+ * @param signature a 64 byte fixed length representation of secp256k1 signature components r and s
+ */
+export declare function encodeSecp256k1Signature(pubkey: Uint8Array, signature: Uint8Array): StdSignature;
+export declare function decodeSignature(signature: StdSignature): {
+ readonly pubkey: Uint8Array;
+ readonly signature: Uint8Array;
+};
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js
new file mode 100644
index 00000000..6a06bec5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.decodeSignature = exports.encodeSecp256k1Signature = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const encoding_1 = require("@cosmjs/encoding");
+const encoding_2 = require("./encoding");
+const pubkeys_1 = require("./pubkeys");
+/**
+ * Takes a binary pubkey and signature to create a signature object
+ *
+ * @param pubkey a compressed secp256k1 public key
+ * @param signature a 64 byte fixed length representation of secp256k1 signature components r and s
+ */
+function encodeSecp256k1Signature(pubkey, signature) {
+ if (signature.length !== 64) {
+ throw new Error("Signature must be 64 bytes long. Cosmos SDK uses a 2x32 byte fixed length encoding for the secp256k1 signature integers r and s.");
+ }
+ return {
+ pub_key: (0, encoding_2.encodeSecp256k1Pubkey)(pubkey),
+ signature: (0, encoding_1.toBase64)(signature),
+ };
+}
+exports.encodeSecp256k1Signature = encodeSecp256k1Signature;
+function decodeSignature(signature) {
+ switch (signature.pub_key.type) {
+ // Note: please don't add cases here without writing additional unit tests
+ case pubkeys_1.pubkeyType.secp256k1:
+ return {
+ pubkey: (0, encoding_1.fromBase64)(signature.pub_key.value),
+ signature: (0, encoding_1.fromBase64)(signature.signature),
+ };
+ default:
+ throw new Error("Unsupported pubkey type");
+ }
+}
+exports.decodeSignature = decodeSignature;
+//# sourceMappingURL=signature.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js.map
new file mode 100644
index 00000000..fd699733
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signature.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,+CAAwD;AAExD,yCAAmD;AACnD,uCAA+C;AAO/C;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,MAAkB,EAAE,SAAqB;IAChF,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;KACH;IAED,OAAO;QACL,OAAO,EAAE,IAAA,gCAAqB,EAAC,MAAM,CAAC;QACtC,SAAS,EAAE,IAAA,mBAAQ,EAAC,SAAS,CAAC;KAC/B,CAAC;AACJ,CAAC;AAXD,4DAWC;AAED,SAAgB,eAAe,CAAC,SAAuB;IAIrD,QAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,0EAA0E;QAC1E,KAAK,oBAAU,CAAC,SAAS;YACvB,OAAO;gBACL,MAAM,EAAE,IAAA,qBAAU,EAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC3C,SAAS,EAAE,IAAA,qBAAU,EAAC,SAAS,CAAC,SAAS,CAAC;aAC3C,CAAC;QACJ;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AACH,CAAC;AAdD,0CAcC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.d.ts
new file mode 100644
index 00000000..bd787c0e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.d.ts
@@ -0,0 +1,43 @@
+import { Coin } from "./coins";
+export interface AminoMsg {
+ readonly type: string;
+ readonly value: any;
+}
+export interface StdFee {
+ readonly amount: readonly Coin[];
+ readonly gas: string;
+ /** The granter address that is used for paying with feegrants */
+ readonly granter?: string;
+ /** The fee payer address. The payer must have signed the transaction. */
+ readonly payer?: string;
+}
+/**
+ * The document to be signed
+ *
+ * @see https://docs.cosmos.network/master/modules/auth/03_types.html#stdsigndoc
+ */
+export interface StdSignDoc {
+ readonly chain_id: string;
+ readonly account_number: string;
+ readonly sequence: string;
+ readonly fee: StdFee;
+ readonly msgs: readonly AminoMsg[];
+ readonly memo: string;
+}
+/** Returns a JSON string with objects sorted by key */
+export declare function sortedJsonStringify(obj: any): string;
+export declare function makeSignDoc(msgs: readonly AminoMsg[], fee: StdFee, chainId: string, memo: string | undefined, accountNumber: number | string, sequence: number | string): StdSignDoc;
+/**
+ * Takes a valid JSON document and performs the following escapings in string values:
+ *
+ * `&` -> `\u0026`
+ * `<` -> `\u003c`
+ * `>` -> `\u003e`
+ *
+ * Since those characters do not occur in other places of the JSON document, only
+ * string values are affected.
+ *
+ * If the input is invalid JSON, the behaviour is undefined.
+ */
+export declare function escapeCharacters(input: string): string;
+export declare function serializeSignDoc(signDoc: StdSignDoc): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js
new file mode 100644
index 00000000..30c95450
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js
@@ -0,0 +1,65 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.serializeSignDoc = exports.escapeCharacters = exports.makeSignDoc = exports.sortedJsonStringify = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const encoding_1 = require("@cosmjs/encoding");
+const math_1 = require("@cosmjs/math");
+function sortedObject(obj) {
+ if (typeof obj !== "object" || obj === null) {
+ return obj;
+ }
+ if (Array.isArray(obj)) {
+ return obj.map(sortedObject);
+ }
+ const sortedKeys = Object.keys(obj).sort();
+ const result = {};
+ // NOTE: Use forEach instead of reduce for performance with large objects eg Wasm code
+ sortedKeys.forEach((key) => {
+ result[key] = sortedObject(obj[key]);
+ });
+ return result;
+}
+/** Returns a JSON string with objects sorted by key */
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+function sortedJsonStringify(obj) {
+ return JSON.stringify(sortedObject(obj));
+}
+exports.sortedJsonStringify = sortedJsonStringify;
+function makeSignDoc(msgs, fee, chainId, memo, accountNumber, sequence) {
+ return {
+ chain_id: chainId,
+ account_number: math_1.Uint53.fromString(accountNumber.toString()).toString(),
+ sequence: math_1.Uint53.fromString(sequence.toString()).toString(),
+ fee: fee,
+ msgs: msgs,
+ memo: memo || "",
+ };
+}
+exports.makeSignDoc = makeSignDoc;
+/**
+ * Takes a valid JSON document and performs the following escapings in string values:
+ *
+ * `&` -> `\u0026`
+ * `<` -> `\u003c`
+ * `>` -> `\u003e`
+ *
+ * Since those characters do not occur in other places of the JSON document, only
+ * string values are affected.
+ *
+ * If the input is invalid JSON, the behaviour is undefined.
+ */
+function escapeCharacters(input) {
+ // When we migrate to target es2021 or above, we can use replaceAll instead of global patterns.
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
+ const amp = /&/g;
+ const lt = //g;
+ return input.replace(amp, "\\u0026").replace(lt, "\\u003c").replace(gt, "\\u003e");
+}
+exports.escapeCharacters = escapeCharacters;
+function serializeSignDoc(signDoc) {
+ const serialized = escapeCharacters(sortedJsonStringify(signDoc));
+ return (0, encoding_1.toUtf8)(serialized);
+}
+exports.serializeSignDoc = serializeSignDoc;
+//# sourceMappingURL=signdoc.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js.map
new file mode 100644
index 00000000..03f37401
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signdoc.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"signdoc.js","sourceRoot":"","sources":["../src/signdoc.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,+CAA0C;AAC1C,uCAAsC;AAgCtC,SAAS,YAAY,CAAC,GAAQ;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;QAC3C,OAAO,GAAG,CAAC;KACZ;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KAC9B;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,sFAAsF;IACtF,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uDAAuD;AACvD,6EAA6E;AAC7E,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAFD,kDAEC;AAED,SAAgB,WAAW,CACzB,IAAyB,EACzB,GAAW,EACX,OAAe,EACf,IAAwB,EACxB,aAA8B,EAC9B,QAAyB;IAEzB,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,cAAc,EAAE,aAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtE,QAAQ,EAAE,aAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC3D,GAAG,EAAE,GAAG;QACR,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI,IAAI,EAAE;KACjB,CAAC;AACJ,CAAC;AAhBD,kCAgBC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,+FAA+F;IAC/F,qGAAqG;IACrG,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACrF,CAAC;AAPD,4CAOC;AAED,SAAgB,gBAAgB,CAAC,OAAmB;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,IAAA,iBAAM,EAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAHD,4CAGC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.d.ts
new file mode 100644
index 00000000..82d2b68c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.d.ts
@@ -0,0 +1,33 @@
+import { StdSignature } from "./signature";
+import { StdSignDoc } from "./signdoc";
+export type Algo = "secp256k1" | "ed25519" | "sr25519";
+export interface AccountData {
+ /** A printable address (typically bech32 encoded) */
+ readonly address: string;
+ readonly algo: Algo;
+ readonly pubkey: Uint8Array;
+}
+export interface AminoSignResponse {
+ /**
+ * The sign doc that was signed.
+ * This may be different from the input signDoc when the signer modifies it as part of the signing process.
+ */
+ readonly signed: StdSignDoc;
+ readonly signature: StdSignature;
+}
+export interface OfflineAminoSigner {
+ /**
+ * Get AccountData array from wallet. Rejects if not enabled.
+ */
+ readonly getAccounts: () => Promise;
+ /**
+ * Request signature from whichever key corresponds to provided bech32-encoded address. Rejects if not enabled.
+ *
+ * The signer implementation may offer the user the ability to override parts of the signDoc. It must
+ * return the doc that was signed in the response.
+ *
+ * @param signerAddress The address of the account that should sign the transaction
+ * @param signDoc The content that should be signed
+ */
+ readonly signAmino: (signerAddress: string, signDoc: StdSignDoc) => Promise;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js
new file mode 100644
index 00000000..c73406ac
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=signer.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js.map
new file mode 100644
index 00000000..5b2efee5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/signer.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.d.ts
new file mode 100644
index 00000000..3cc05bc6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.d.ts
@@ -0,0 +1,15 @@
+import { StdSignature } from "./signature";
+import { AminoMsg, StdFee, StdSignDoc } from "./signdoc";
+/**
+ * A Cosmos SDK StdTx
+ *
+ * @see https://docs.cosmos.network/master/modules/auth/03_types.html#stdtx
+ */
+export interface StdTx {
+ readonly msg: readonly AminoMsg[];
+ readonly fee: StdFee;
+ readonly signatures: readonly StdSignature[];
+ readonly memo: string | undefined;
+}
+export declare function isStdTx(txValue: unknown): txValue is StdTx;
+export declare function makeStdTx(content: Pick, signatures: StdSignature | readonly StdSignature[]): StdTx;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js
new file mode 100644
index 00000000..ee56fd14
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.makeStdTx = exports.isStdTx = void 0;
+function isStdTx(txValue) {
+ const { memo, msg, fee, signatures } = txValue;
+ return (typeof memo === "string" && Array.isArray(msg) && typeof fee === "object" && Array.isArray(signatures));
+}
+exports.isStdTx = isStdTx;
+function makeStdTx(content, signatures) {
+ return {
+ msg: content.msgs,
+ fee: content.fee,
+ memo: content.memo,
+ signatures: Array.isArray(signatures) ? signatures : [signatures],
+ };
+}
+exports.makeStdTx = makeStdTx;
+//# sourceMappingURL=stdtx.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js.map
new file mode 100644
index 00000000..7bacecf8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/stdtx.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"stdtx.js","sourceRoot":"","sources":["../src/stdtx.ts"],"names":[],"mappings":";;;AAeA,SAAgB,OAAO,CAAC,OAAgB;IACtC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,OAAgB,CAAC;IACxD,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CACvG,CAAC;AACJ,CAAC;AALD,0BAKC;AAED,SAAgB,SAAS,CACvB,OAAkD,EAClD,UAAkD;IAElD,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;KAClE,CAAC;AACJ,CAAC;AAVD,8BAUC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.d.ts
new file mode 100644
index 00000000..bc68969b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.d.ts
@@ -0,0 +1,32 @@
+/**
+ * A fixed salt is chosen to archive a deterministic password to key derivation.
+ * This reduces the scope of a potential rainbow attack to all CosmJS users.
+ * Must be 16 bytes due to implementation limitations.
+ */
+export declare const cosmjsSalt: Uint8Array;
+export interface KdfConfiguration {
+ /**
+ * An algorithm identifier, such as "argon2id" or "scrypt".
+ */
+ readonly algorithm: string;
+ /** A map of algorithm-specific parameters */
+ readonly params: Record;
+}
+export declare function executeKdf(password: string, configuration: KdfConfiguration): Promise;
+/**
+ * Configuration how to encrypt data or how data was encrypted.
+ * This is stored as part of the wallet serialization and must only contain JSON types.
+ */
+export interface EncryptionConfiguration {
+ /**
+ * An algorithm identifier, such as "xchacha20poly1305-ietf".
+ */
+ readonly algorithm: string;
+ /** A map of algorithm-specific parameters */
+ readonly params?: Record;
+}
+export declare const supportedAlgorithms: {
+ xchacha20poly1305Ietf: string;
+};
+export declare function encrypt(plaintext: Uint8Array, encryptionKey: Uint8Array, config: EncryptionConfiguration): Promise;
+export declare function decrypt(ciphertext: Uint8Array, encryptionKey: Uint8Array, config: EncryptionConfiguration): Promise;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js
new file mode 100644
index 00000000..365e2996
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js
@@ -0,0 +1,54 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.decrypt = exports.encrypt = exports.supportedAlgorithms = exports.executeKdf = exports.cosmjsSalt = void 0;
+const crypto_1 = require("@cosmjs/crypto");
+const encoding_1 = require("@cosmjs/encoding");
+/**
+ * A fixed salt is chosen to archive a deterministic password to key derivation.
+ * This reduces the scope of a potential rainbow attack to all CosmJS users.
+ * Must be 16 bytes due to implementation limitations.
+ */
+exports.cosmjsSalt = (0, encoding_1.toAscii)("The CosmJS salt.");
+async function executeKdf(password, configuration) {
+ switch (configuration.algorithm) {
+ case "argon2id": {
+ const options = configuration.params;
+ if (!(0, crypto_1.isArgon2idOptions)(options))
+ throw new Error("Invalid format of argon2id params");
+ return crypto_1.Argon2id.execute(password, exports.cosmjsSalt, options);
+ }
+ default:
+ throw new Error("Unsupported KDF algorithm");
+ }
+}
+exports.executeKdf = executeKdf;
+exports.supportedAlgorithms = {
+ xchacha20poly1305Ietf: "xchacha20poly1305-ietf",
+};
+async function encrypt(plaintext, encryptionKey, config) {
+ switch (config.algorithm) {
+ case exports.supportedAlgorithms.xchacha20poly1305Ietf: {
+ const nonce = crypto_1.Random.getBytes(crypto_1.xchacha20NonceLength);
+ // Prepend fixed-length nonce to ciphertext as suggested in the example from https://github.com/jedisct1/libsodium.js#api
+ return new Uint8Array([
+ ...nonce,
+ ...(await crypto_1.Xchacha20poly1305Ietf.encrypt(plaintext, encryptionKey, nonce)),
+ ]);
+ }
+ default:
+ throw new Error(`Unsupported encryption algorithm: '${config.algorithm}'`);
+ }
+}
+exports.encrypt = encrypt;
+async function decrypt(ciphertext, encryptionKey, config) {
+ switch (config.algorithm) {
+ case exports.supportedAlgorithms.xchacha20poly1305Ietf: {
+ const nonce = ciphertext.slice(0, crypto_1.xchacha20NonceLength);
+ return crypto_1.Xchacha20poly1305Ietf.decrypt(ciphertext.slice(crypto_1.xchacha20NonceLength), encryptionKey, nonce);
+ }
+ default:
+ throw new Error(`Unsupported encryption algorithm: '${config.algorithm}'`);
+ }
+}
+exports.decrypt = decrypt;
+//# sourceMappingURL=wallet.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js.map
new file mode 100644
index 00000000..57b57c7c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/build/wallet.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":";;;AAAA,2CAMwB;AACxB,+CAA2C;AAE3C;;;;GAIG;AACU,QAAA,UAAU,GAAG,IAAA,kBAAO,EAAC,kBAAkB,CAAC,CAAC;AAW/C,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,aAA+B;IAChF,QAAQ,aAAa,CAAC,SAAS,EAAE;QAC/B,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,IAAA,0BAAiB,EAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACtF,OAAO,iBAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAU,EAAE,OAAO,CAAC,CAAC;SACxD;QACD;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAChD;AACH,CAAC;AAVD,gCAUC;AAeY,QAAA,mBAAmB,GAAG;IACjC,qBAAqB,EAAE,wBAAwB;CAChD,CAAC;AAEK,KAAK,UAAU,OAAO,CAC3B,SAAqB,EACrB,aAAyB,EACzB,MAA+B;IAE/B,QAAQ,MAAM,CAAC,SAAS,EAAE;QACxB,KAAK,2BAAmB,CAAC,qBAAqB,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,eAAM,CAAC,QAAQ,CAAC,6BAAoB,CAAC,CAAC;YACpD,yHAAyH;YACzH,OAAO,IAAI,UAAU,CAAC;gBACpB,GAAG,KAAK;gBACR,GAAG,CAAC,MAAM,8BAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;aAC1E,CAAC,CAAC;SACJ;QACD;YACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;KAC9E;AACH,CAAC;AAjBD,0BAiBC;AAEM,KAAK,UAAU,OAAO,CAC3B,UAAsB,EACtB,aAAyB,EACzB,MAA+B;IAE/B,QAAQ,MAAM,CAAC,SAAS,EAAE;QACxB,KAAK,2BAAmB,CAAC,qBAAqB,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,6BAAoB,CAAC,CAAC;YACxD,OAAO,8BAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,6BAAoB,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SACpG;QACD;YACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;KAC9E;AACH,CAAC;AAbD,0BAaC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/package.json b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/package.json
new file mode 100644
index 00000000..5baa62ad
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "@cosmjs/amino",
+ "version": "0.31.0",
+ "description": "Helpers for Amino based signing.",
+ "contributors": [
+ "Simon Warta "
+ ],
+ "license": "Apache-2.0",
+ "main": "build/index.js",
+ "types": "build/index.d.ts",
+ "files": [
+ "build/",
+ "*.md",
+ "!*.spec.*",
+ "!**/testdata/"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cosmos/cosmjs/tree/main/packages/amino"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "docs": "typedoc --options typedoc.js",
+ "lint": "eslint --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "lint-fix": "eslint --fix --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "format": "prettier --write --loglevel warn \"./src/**/*.ts\"",
+ "format-text": "prettier --write \"./*.md\"",
+ "test-node": "yarn node jasmine-testrunner.js",
+ "test-edge": "yarn pack-web && karma start --single-run --browsers Edge",
+ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",
+ "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless",
+ "test-safari": "yarn pack-web && karma start --single-run --browsers Safari",
+ "test": "yarn build-or-skip && yarn test-node",
+ "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet",
+ "build": "rm -rf ./build && tsc",
+ "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build",
+ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js"
+ },
+ "dependencies": {
+ "@cosmjs/crypto": "^0.31.0",
+ "@cosmjs/encoding": "^0.31.0",
+ "@cosmjs/math": "^0.31.0",
+ "@cosmjs/utils": "^0.31.0"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.1",
+ "@types/eslint-plugin-prettier": "^3",
+ "@types/jasmine": "^4",
+ "@types/karma-firefox-launcher": "^2",
+ "@types/karma-jasmine": "^4",
+ "@types/karma-jasmine-html-reporter": "^1",
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
+ "@typescript-eslint/parser": "^5.54.0",
+ "eslint": "^7.5",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-import-resolver-node": "^0.3.4",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-simple-import-sort": "^7.0.0",
+ "esm": "^3.2.25",
+ "glob": "^7.1.6",
+ "jasmine": "^4",
+ "jasmine-spec-reporter": "^6",
+ "karma": "^6.3.14",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-firefox-launcher": "^2.1.0",
+ "karma-jasmine": "^5",
+ "karma-jasmine-html-reporter": "^1.5.4",
+ "nyc": "^15.1.0",
+ "prettier": "^2.8.1",
+ "ses": "^0.11.0",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^8",
+ "typedoc": "^0.23",
+ "typescript": "~4.9",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.6.0"
+ }
+}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/README.md b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/README.md
new file mode 100644
index 00000000..d8820186
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/README.md
@@ -0,0 +1,15 @@
+# @cosmjs/crypto
+
+[](https://www.npmjs.com/package/@cosmjs/crypto)
+
+This package contains low-level cryptographic functionality used in other
+@cosmjs libraries. Little of it is implemented here, but mainly it is a curation
+of external libraries along with correctness tests. We add type safety, some
+more checks, and a simple API to these libraries. This can also be freely
+imported outside of CosmJS based applications.
+
+## License
+
+This package is part of the cosmjs repository, licensed under the Apache License
+2.0 (see [NOTICE](https://github.com/cosmos/cosmjs/blob/main/NOTICE) and
+[LICENSE](https://github.com/cosmos/cosmjs/blob/main/LICENSE)).
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.d.ts
new file mode 100644
index 00000000..b5cb7e22
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.d.ts
@@ -0,0 +1,29 @@
+export declare function entropyToMnemonic(entropy: Uint8Array): string;
+export declare function mnemonicToEntropy(mnemonic: string): Uint8Array;
+export declare class EnglishMnemonic {
+ static readonly wordlist: readonly string[];
+ private static readonly mnemonicMatcher;
+ private readonly data;
+ constructor(mnemonic: string);
+ toString(): string;
+}
+export declare class Bip39 {
+ /**
+ * Encodes raw entropy of length 16, 20, 24, 28 or 32 bytes as an English mnemonic between 12 and 24 words.
+ *
+ * | Entropy | Words |
+ * |--------------------|-------|
+ * | 128 bit (16 bytes) | 12 |
+ * | 160 bit (20 bytes) | 15 |
+ * | 192 bit (24 bytes) | 18 |
+ * | 224 bit (28 bytes) | 21 |
+ * | 256 bit (32 bytes) | 24 |
+ *
+ *
+ * @see https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#generating-the-mnemonic
+ * @param entropy The entropy to be encoded. This must be cryptographically secure.
+ */
+ static encode(entropy: Uint8Array): EnglishMnemonic;
+ static decode(mnemonic: EnglishMnemonic): Uint8Array;
+ static mnemonicToSeed(mnemonic: EnglishMnemonic, password?: string): Promise;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js
new file mode 100644
index 00000000..5a5a2079
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js
@@ -0,0 +1,2186 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Bip39 = exports.EnglishMnemonic = exports.mnemonicToEntropy = exports.entropyToMnemonic = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+const pbkdf2_1 = require("./pbkdf2");
+const sha_1 = require("./sha");
+const wordlist = [
+ "abandon",
+ "ability",
+ "able",
+ "about",
+ "above",
+ "absent",
+ "absorb",
+ "abstract",
+ "absurd",
+ "abuse",
+ "access",
+ "accident",
+ "account",
+ "accuse",
+ "achieve",
+ "acid",
+ "acoustic",
+ "acquire",
+ "across",
+ "act",
+ "action",
+ "actor",
+ "actress",
+ "actual",
+ "adapt",
+ "add",
+ "addict",
+ "address",
+ "adjust",
+ "admit",
+ "adult",
+ "advance",
+ "advice",
+ "aerobic",
+ "affair",
+ "afford",
+ "afraid",
+ "again",
+ "age",
+ "agent",
+ "agree",
+ "ahead",
+ "aim",
+ "air",
+ "airport",
+ "aisle",
+ "alarm",
+ "album",
+ "alcohol",
+ "alert",
+ "alien",
+ "all",
+ "alley",
+ "allow",
+ "almost",
+ "alone",
+ "alpha",
+ "already",
+ "also",
+ "alter",
+ "always",
+ "amateur",
+ "amazing",
+ "among",
+ "amount",
+ "amused",
+ "analyst",
+ "anchor",
+ "ancient",
+ "anger",
+ "angle",
+ "angry",
+ "animal",
+ "ankle",
+ "announce",
+ "annual",
+ "another",
+ "answer",
+ "antenna",
+ "antique",
+ "anxiety",
+ "any",
+ "apart",
+ "apology",
+ "appear",
+ "apple",
+ "approve",
+ "april",
+ "arch",
+ "arctic",
+ "area",
+ "arena",
+ "argue",
+ "arm",
+ "armed",
+ "armor",
+ "army",
+ "around",
+ "arrange",
+ "arrest",
+ "arrive",
+ "arrow",
+ "art",
+ "artefact",
+ "artist",
+ "artwork",
+ "ask",
+ "aspect",
+ "assault",
+ "asset",
+ "assist",
+ "assume",
+ "asthma",
+ "athlete",
+ "atom",
+ "attack",
+ "attend",
+ "attitude",
+ "attract",
+ "auction",
+ "audit",
+ "august",
+ "aunt",
+ "author",
+ "auto",
+ "autumn",
+ "average",
+ "avocado",
+ "avoid",
+ "awake",
+ "aware",
+ "away",
+ "awesome",
+ "awful",
+ "awkward",
+ "axis",
+ "baby",
+ "bachelor",
+ "bacon",
+ "badge",
+ "bag",
+ "balance",
+ "balcony",
+ "ball",
+ "bamboo",
+ "banana",
+ "banner",
+ "bar",
+ "barely",
+ "bargain",
+ "barrel",
+ "base",
+ "basic",
+ "basket",
+ "battle",
+ "beach",
+ "bean",
+ "beauty",
+ "because",
+ "become",
+ "beef",
+ "before",
+ "begin",
+ "behave",
+ "behind",
+ "believe",
+ "below",
+ "belt",
+ "bench",
+ "benefit",
+ "best",
+ "betray",
+ "better",
+ "between",
+ "beyond",
+ "bicycle",
+ "bid",
+ "bike",
+ "bind",
+ "biology",
+ "bird",
+ "birth",
+ "bitter",
+ "black",
+ "blade",
+ "blame",
+ "blanket",
+ "blast",
+ "bleak",
+ "bless",
+ "blind",
+ "blood",
+ "blossom",
+ "blouse",
+ "blue",
+ "blur",
+ "blush",
+ "board",
+ "boat",
+ "body",
+ "boil",
+ "bomb",
+ "bone",
+ "bonus",
+ "book",
+ "boost",
+ "border",
+ "boring",
+ "borrow",
+ "boss",
+ "bottom",
+ "bounce",
+ "box",
+ "boy",
+ "bracket",
+ "brain",
+ "brand",
+ "brass",
+ "brave",
+ "bread",
+ "breeze",
+ "brick",
+ "bridge",
+ "brief",
+ "bright",
+ "bring",
+ "brisk",
+ "broccoli",
+ "broken",
+ "bronze",
+ "broom",
+ "brother",
+ "brown",
+ "brush",
+ "bubble",
+ "buddy",
+ "budget",
+ "buffalo",
+ "build",
+ "bulb",
+ "bulk",
+ "bullet",
+ "bundle",
+ "bunker",
+ "burden",
+ "burger",
+ "burst",
+ "bus",
+ "business",
+ "busy",
+ "butter",
+ "buyer",
+ "buzz",
+ "cabbage",
+ "cabin",
+ "cable",
+ "cactus",
+ "cage",
+ "cake",
+ "call",
+ "calm",
+ "camera",
+ "camp",
+ "can",
+ "canal",
+ "cancel",
+ "candy",
+ "cannon",
+ "canoe",
+ "canvas",
+ "canyon",
+ "capable",
+ "capital",
+ "captain",
+ "car",
+ "carbon",
+ "card",
+ "cargo",
+ "carpet",
+ "carry",
+ "cart",
+ "case",
+ "cash",
+ "casino",
+ "castle",
+ "casual",
+ "cat",
+ "catalog",
+ "catch",
+ "category",
+ "cattle",
+ "caught",
+ "cause",
+ "caution",
+ "cave",
+ "ceiling",
+ "celery",
+ "cement",
+ "census",
+ "century",
+ "cereal",
+ "certain",
+ "chair",
+ "chalk",
+ "champion",
+ "change",
+ "chaos",
+ "chapter",
+ "charge",
+ "chase",
+ "chat",
+ "cheap",
+ "check",
+ "cheese",
+ "chef",
+ "cherry",
+ "chest",
+ "chicken",
+ "chief",
+ "child",
+ "chimney",
+ "choice",
+ "choose",
+ "chronic",
+ "chuckle",
+ "chunk",
+ "churn",
+ "cigar",
+ "cinnamon",
+ "circle",
+ "citizen",
+ "city",
+ "civil",
+ "claim",
+ "clap",
+ "clarify",
+ "claw",
+ "clay",
+ "clean",
+ "clerk",
+ "clever",
+ "click",
+ "client",
+ "cliff",
+ "climb",
+ "clinic",
+ "clip",
+ "clock",
+ "clog",
+ "close",
+ "cloth",
+ "cloud",
+ "clown",
+ "club",
+ "clump",
+ "cluster",
+ "clutch",
+ "coach",
+ "coast",
+ "coconut",
+ "code",
+ "coffee",
+ "coil",
+ "coin",
+ "collect",
+ "color",
+ "column",
+ "combine",
+ "come",
+ "comfort",
+ "comic",
+ "common",
+ "company",
+ "concert",
+ "conduct",
+ "confirm",
+ "congress",
+ "connect",
+ "consider",
+ "control",
+ "convince",
+ "cook",
+ "cool",
+ "copper",
+ "copy",
+ "coral",
+ "core",
+ "corn",
+ "correct",
+ "cost",
+ "cotton",
+ "couch",
+ "country",
+ "couple",
+ "course",
+ "cousin",
+ "cover",
+ "coyote",
+ "crack",
+ "cradle",
+ "craft",
+ "cram",
+ "crane",
+ "crash",
+ "crater",
+ "crawl",
+ "crazy",
+ "cream",
+ "credit",
+ "creek",
+ "crew",
+ "cricket",
+ "crime",
+ "crisp",
+ "critic",
+ "crop",
+ "cross",
+ "crouch",
+ "crowd",
+ "crucial",
+ "cruel",
+ "cruise",
+ "crumble",
+ "crunch",
+ "crush",
+ "cry",
+ "crystal",
+ "cube",
+ "culture",
+ "cup",
+ "cupboard",
+ "curious",
+ "current",
+ "curtain",
+ "curve",
+ "cushion",
+ "custom",
+ "cute",
+ "cycle",
+ "dad",
+ "damage",
+ "damp",
+ "dance",
+ "danger",
+ "daring",
+ "dash",
+ "daughter",
+ "dawn",
+ "day",
+ "deal",
+ "debate",
+ "debris",
+ "decade",
+ "december",
+ "decide",
+ "decline",
+ "decorate",
+ "decrease",
+ "deer",
+ "defense",
+ "define",
+ "defy",
+ "degree",
+ "delay",
+ "deliver",
+ "demand",
+ "demise",
+ "denial",
+ "dentist",
+ "deny",
+ "depart",
+ "depend",
+ "deposit",
+ "depth",
+ "deputy",
+ "derive",
+ "describe",
+ "desert",
+ "design",
+ "desk",
+ "despair",
+ "destroy",
+ "detail",
+ "detect",
+ "develop",
+ "device",
+ "devote",
+ "diagram",
+ "dial",
+ "diamond",
+ "diary",
+ "dice",
+ "diesel",
+ "diet",
+ "differ",
+ "digital",
+ "dignity",
+ "dilemma",
+ "dinner",
+ "dinosaur",
+ "direct",
+ "dirt",
+ "disagree",
+ "discover",
+ "disease",
+ "dish",
+ "dismiss",
+ "disorder",
+ "display",
+ "distance",
+ "divert",
+ "divide",
+ "divorce",
+ "dizzy",
+ "doctor",
+ "document",
+ "dog",
+ "doll",
+ "dolphin",
+ "domain",
+ "donate",
+ "donkey",
+ "donor",
+ "door",
+ "dose",
+ "double",
+ "dove",
+ "draft",
+ "dragon",
+ "drama",
+ "drastic",
+ "draw",
+ "dream",
+ "dress",
+ "drift",
+ "drill",
+ "drink",
+ "drip",
+ "drive",
+ "drop",
+ "drum",
+ "dry",
+ "duck",
+ "dumb",
+ "dune",
+ "during",
+ "dust",
+ "dutch",
+ "duty",
+ "dwarf",
+ "dynamic",
+ "eager",
+ "eagle",
+ "early",
+ "earn",
+ "earth",
+ "easily",
+ "east",
+ "easy",
+ "echo",
+ "ecology",
+ "economy",
+ "edge",
+ "edit",
+ "educate",
+ "effort",
+ "egg",
+ "eight",
+ "either",
+ "elbow",
+ "elder",
+ "electric",
+ "elegant",
+ "element",
+ "elephant",
+ "elevator",
+ "elite",
+ "else",
+ "embark",
+ "embody",
+ "embrace",
+ "emerge",
+ "emotion",
+ "employ",
+ "empower",
+ "empty",
+ "enable",
+ "enact",
+ "end",
+ "endless",
+ "endorse",
+ "enemy",
+ "energy",
+ "enforce",
+ "engage",
+ "engine",
+ "enhance",
+ "enjoy",
+ "enlist",
+ "enough",
+ "enrich",
+ "enroll",
+ "ensure",
+ "enter",
+ "entire",
+ "entry",
+ "envelope",
+ "episode",
+ "equal",
+ "equip",
+ "era",
+ "erase",
+ "erode",
+ "erosion",
+ "error",
+ "erupt",
+ "escape",
+ "essay",
+ "essence",
+ "estate",
+ "eternal",
+ "ethics",
+ "evidence",
+ "evil",
+ "evoke",
+ "evolve",
+ "exact",
+ "example",
+ "excess",
+ "exchange",
+ "excite",
+ "exclude",
+ "excuse",
+ "execute",
+ "exercise",
+ "exhaust",
+ "exhibit",
+ "exile",
+ "exist",
+ "exit",
+ "exotic",
+ "expand",
+ "expect",
+ "expire",
+ "explain",
+ "expose",
+ "express",
+ "extend",
+ "extra",
+ "eye",
+ "eyebrow",
+ "fabric",
+ "face",
+ "faculty",
+ "fade",
+ "faint",
+ "faith",
+ "fall",
+ "false",
+ "fame",
+ "family",
+ "famous",
+ "fan",
+ "fancy",
+ "fantasy",
+ "farm",
+ "fashion",
+ "fat",
+ "fatal",
+ "father",
+ "fatigue",
+ "fault",
+ "favorite",
+ "feature",
+ "february",
+ "federal",
+ "fee",
+ "feed",
+ "feel",
+ "female",
+ "fence",
+ "festival",
+ "fetch",
+ "fever",
+ "few",
+ "fiber",
+ "fiction",
+ "field",
+ "figure",
+ "file",
+ "film",
+ "filter",
+ "final",
+ "find",
+ "fine",
+ "finger",
+ "finish",
+ "fire",
+ "firm",
+ "first",
+ "fiscal",
+ "fish",
+ "fit",
+ "fitness",
+ "fix",
+ "flag",
+ "flame",
+ "flash",
+ "flat",
+ "flavor",
+ "flee",
+ "flight",
+ "flip",
+ "float",
+ "flock",
+ "floor",
+ "flower",
+ "fluid",
+ "flush",
+ "fly",
+ "foam",
+ "focus",
+ "fog",
+ "foil",
+ "fold",
+ "follow",
+ "food",
+ "foot",
+ "force",
+ "forest",
+ "forget",
+ "fork",
+ "fortune",
+ "forum",
+ "forward",
+ "fossil",
+ "foster",
+ "found",
+ "fox",
+ "fragile",
+ "frame",
+ "frequent",
+ "fresh",
+ "friend",
+ "fringe",
+ "frog",
+ "front",
+ "frost",
+ "frown",
+ "frozen",
+ "fruit",
+ "fuel",
+ "fun",
+ "funny",
+ "furnace",
+ "fury",
+ "future",
+ "gadget",
+ "gain",
+ "galaxy",
+ "gallery",
+ "game",
+ "gap",
+ "garage",
+ "garbage",
+ "garden",
+ "garlic",
+ "garment",
+ "gas",
+ "gasp",
+ "gate",
+ "gather",
+ "gauge",
+ "gaze",
+ "general",
+ "genius",
+ "genre",
+ "gentle",
+ "genuine",
+ "gesture",
+ "ghost",
+ "giant",
+ "gift",
+ "giggle",
+ "ginger",
+ "giraffe",
+ "girl",
+ "give",
+ "glad",
+ "glance",
+ "glare",
+ "glass",
+ "glide",
+ "glimpse",
+ "globe",
+ "gloom",
+ "glory",
+ "glove",
+ "glow",
+ "glue",
+ "goat",
+ "goddess",
+ "gold",
+ "good",
+ "goose",
+ "gorilla",
+ "gospel",
+ "gossip",
+ "govern",
+ "gown",
+ "grab",
+ "grace",
+ "grain",
+ "grant",
+ "grape",
+ "grass",
+ "gravity",
+ "great",
+ "green",
+ "grid",
+ "grief",
+ "grit",
+ "grocery",
+ "group",
+ "grow",
+ "grunt",
+ "guard",
+ "guess",
+ "guide",
+ "guilt",
+ "guitar",
+ "gun",
+ "gym",
+ "habit",
+ "hair",
+ "half",
+ "hammer",
+ "hamster",
+ "hand",
+ "happy",
+ "harbor",
+ "hard",
+ "harsh",
+ "harvest",
+ "hat",
+ "have",
+ "hawk",
+ "hazard",
+ "head",
+ "health",
+ "heart",
+ "heavy",
+ "hedgehog",
+ "height",
+ "hello",
+ "helmet",
+ "help",
+ "hen",
+ "hero",
+ "hidden",
+ "high",
+ "hill",
+ "hint",
+ "hip",
+ "hire",
+ "history",
+ "hobby",
+ "hockey",
+ "hold",
+ "hole",
+ "holiday",
+ "hollow",
+ "home",
+ "honey",
+ "hood",
+ "hope",
+ "horn",
+ "horror",
+ "horse",
+ "hospital",
+ "host",
+ "hotel",
+ "hour",
+ "hover",
+ "hub",
+ "huge",
+ "human",
+ "humble",
+ "humor",
+ "hundred",
+ "hungry",
+ "hunt",
+ "hurdle",
+ "hurry",
+ "hurt",
+ "husband",
+ "hybrid",
+ "ice",
+ "icon",
+ "idea",
+ "identify",
+ "idle",
+ "ignore",
+ "ill",
+ "illegal",
+ "illness",
+ "image",
+ "imitate",
+ "immense",
+ "immune",
+ "impact",
+ "impose",
+ "improve",
+ "impulse",
+ "inch",
+ "include",
+ "income",
+ "increase",
+ "index",
+ "indicate",
+ "indoor",
+ "industry",
+ "infant",
+ "inflict",
+ "inform",
+ "inhale",
+ "inherit",
+ "initial",
+ "inject",
+ "injury",
+ "inmate",
+ "inner",
+ "innocent",
+ "input",
+ "inquiry",
+ "insane",
+ "insect",
+ "inside",
+ "inspire",
+ "install",
+ "intact",
+ "interest",
+ "into",
+ "invest",
+ "invite",
+ "involve",
+ "iron",
+ "island",
+ "isolate",
+ "issue",
+ "item",
+ "ivory",
+ "jacket",
+ "jaguar",
+ "jar",
+ "jazz",
+ "jealous",
+ "jeans",
+ "jelly",
+ "jewel",
+ "job",
+ "join",
+ "joke",
+ "journey",
+ "joy",
+ "judge",
+ "juice",
+ "jump",
+ "jungle",
+ "junior",
+ "junk",
+ "just",
+ "kangaroo",
+ "keen",
+ "keep",
+ "ketchup",
+ "key",
+ "kick",
+ "kid",
+ "kidney",
+ "kind",
+ "kingdom",
+ "kiss",
+ "kit",
+ "kitchen",
+ "kite",
+ "kitten",
+ "kiwi",
+ "knee",
+ "knife",
+ "knock",
+ "know",
+ "lab",
+ "label",
+ "labor",
+ "ladder",
+ "lady",
+ "lake",
+ "lamp",
+ "language",
+ "laptop",
+ "large",
+ "later",
+ "latin",
+ "laugh",
+ "laundry",
+ "lava",
+ "law",
+ "lawn",
+ "lawsuit",
+ "layer",
+ "lazy",
+ "leader",
+ "leaf",
+ "learn",
+ "leave",
+ "lecture",
+ "left",
+ "leg",
+ "legal",
+ "legend",
+ "leisure",
+ "lemon",
+ "lend",
+ "length",
+ "lens",
+ "leopard",
+ "lesson",
+ "letter",
+ "level",
+ "liar",
+ "liberty",
+ "library",
+ "license",
+ "life",
+ "lift",
+ "light",
+ "like",
+ "limb",
+ "limit",
+ "link",
+ "lion",
+ "liquid",
+ "list",
+ "little",
+ "live",
+ "lizard",
+ "load",
+ "loan",
+ "lobster",
+ "local",
+ "lock",
+ "logic",
+ "lonely",
+ "long",
+ "loop",
+ "lottery",
+ "loud",
+ "lounge",
+ "love",
+ "loyal",
+ "lucky",
+ "luggage",
+ "lumber",
+ "lunar",
+ "lunch",
+ "luxury",
+ "lyrics",
+ "machine",
+ "mad",
+ "magic",
+ "magnet",
+ "maid",
+ "mail",
+ "main",
+ "major",
+ "make",
+ "mammal",
+ "man",
+ "manage",
+ "mandate",
+ "mango",
+ "mansion",
+ "manual",
+ "maple",
+ "marble",
+ "march",
+ "margin",
+ "marine",
+ "market",
+ "marriage",
+ "mask",
+ "mass",
+ "master",
+ "match",
+ "material",
+ "math",
+ "matrix",
+ "matter",
+ "maximum",
+ "maze",
+ "meadow",
+ "mean",
+ "measure",
+ "meat",
+ "mechanic",
+ "medal",
+ "media",
+ "melody",
+ "melt",
+ "member",
+ "memory",
+ "mention",
+ "menu",
+ "mercy",
+ "merge",
+ "merit",
+ "merry",
+ "mesh",
+ "message",
+ "metal",
+ "method",
+ "middle",
+ "midnight",
+ "milk",
+ "million",
+ "mimic",
+ "mind",
+ "minimum",
+ "minor",
+ "minute",
+ "miracle",
+ "mirror",
+ "misery",
+ "miss",
+ "mistake",
+ "mix",
+ "mixed",
+ "mixture",
+ "mobile",
+ "model",
+ "modify",
+ "mom",
+ "moment",
+ "monitor",
+ "monkey",
+ "monster",
+ "month",
+ "moon",
+ "moral",
+ "more",
+ "morning",
+ "mosquito",
+ "mother",
+ "motion",
+ "motor",
+ "mountain",
+ "mouse",
+ "move",
+ "movie",
+ "much",
+ "muffin",
+ "mule",
+ "multiply",
+ "muscle",
+ "museum",
+ "mushroom",
+ "music",
+ "must",
+ "mutual",
+ "myself",
+ "mystery",
+ "myth",
+ "naive",
+ "name",
+ "napkin",
+ "narrow",
+ "nasty",
+ "nation",
+ "nature",
+ "near",
+ "neck",
+ "need",
+ "negative",
+ "neglect",
+ "neither",
+ "nephew",
+ "nerve",
+ "nest",
+ "net",
+ "network",
+ "neutral",
+ "never",
+ "news",
+ "next",
+ "nice",
+ "night",
+ "noble",
+ "noise",
+ "nominee",
+ "noodle",
+ "normal",
+ "north",
+ "nose",
+ "notable",
+ "note",
+ "nothing",
+ "notice",
+ "novel",
+ "now",
+ "nuclear",
+ "number",
+ "nurse",
+ "nut",
+ "oak",
+ "obey",
+ "object",
+ "oblige",
+ "obscure",
+ "observe",
+ "obtain",
+ "obvious",
+ "occur",
+ "ocean",
+ "october",
+ "odor",
+ "off",
+ "offer",
+ "office",
+ "often",
+ "oil",
+ "okay",
+ "old",
+ "olive",
+ "olympic",
+ "omit",
+ "once",
+ "one",
+ "onion",
+ "online",
+ "only",
+ "open",
+ "opera",
+ "opinion",
+ "oppose",
+ "option",
+ "orange",
+ "orbit",
+ "orchard",
+ "order",
+ "ordinary",
+ "organ",
+ "orient",
+ "original",
+ "orphan",
+ "ostrich",
+ "other",
+ "outdoor",
+ "outer",
+ "output",
+ "outside",
+ "oval",
+ "oven",
+ "over",
+ "own",
+ "owner",
+ "oxygen",
+ "oyster",
+ "ozone",
+ "pact",
+ "paddle",
+ "page",
+ "pair",
+ "palace",
+ "palm",
+ "panda",
+ "panel",
+ "panic",
+ "panther",
+ "paper",
+ "parade",
+ "parent",
+ "park",
+ "parrot",
+ "party",
+ "pass",
+ "patch",
+ "path",
+ "patient",
+ "patrol",
+ "pattern",
+ "pause",
+ "pave",
+ "payment",
+ "peace",
+ "peanut",
+ "pear",
+ "peasant",
+ "pelican",
+ "pen",
+ "penalty",
+ "pencil",
+ "people",
+ "pepper",
+ "perfect",
+ "permit",
+ "person",
+ "pet",
+ "phone",
+ "photo",
+ "phrase",
+ "physical",
+ "piano",
+ "picnic",
+ "picture",
+ "piece",
+ "pig",
+ "pigeon",
+ "pill",
+ "pilot",
+ "pink",
+ "pioneer",
+ "pipe",
+ "pistol",
+ "pitch",
+ "pizza",
+ "place",
+ "planet",
+ "plastic",
+ "plate",
+ "play",
+ "please",
+ "pledge",
+ "pluck",
+ "plug",
+ "plunge",
+ "poem",
+ "poet",
+ "point",
+ "polar",
+ "pole",
+ "police",
+ "pond",
+ "pony",
+ "pool",
+ "popular",
+ "portion",
+ "position",
+ "possible",
+ "post",
+ "potato",
+ "pottery",
+ "poverty",
+ "powder",
+ "power",
+ "practice",
+ "praise",
+ "predict",
+ "prefer",
+ "prepare",
+ "present",
+ "pretty",
+ "prevent",
+ "price",
+ "pride",
+ "primary",
+ "print",
+ "priority",
+ "prison",
+ "private",
+ "prize",
+ "problem",
+ "process",
+ "produce",
+ "profit",
+ "program",
+ "project",
+ "promote",
+ "proof",
+ "property",
+ "prosper",
+ "protect",
+ "proud",
+ "provide",
+ "public",
+ "pudding",
+ "pull",
+ "pulp",
+ "pulse",
+ "pumpkin",
+ "punch",
+ "pupil",
+ "puppy",
+ "purchase",
+ "purity",
+ "purpose",
+ "purse",
+ "push",
+ "put",
+ "puzzle",
+ "pyramid",
+ "quality",
+ "quantum",
+ "quarter",
+ "question",
+ "quick",
+ "quit",
+ "quiz",
+ "quote",
+ "rabbit",
+ "raccoon",
+ "race",
+ "rack",
+ "radar",
+ "radio",
+ "rail",
+ "rain",
+ "raise",
+ "rally",
+ "ramp",
+ "ranch",
+ "random",
+ "range",
+ "rapid",
+ "rare",
+ "rate",
+ "rather",
+ "raven",
+ "raw",
+ "razor",
+ "ready",
+ "real",
+ "reason",
+ "rebel",
+ "rebuild",
+ "recall",
+ "receive",
+ "recipe",
+ "record",
+ "recycle",
+ "reduce",
+ "reflect",
+ "reform",
+ "refuse",
+ "region",
+ "regret",
+ "regular",
+ "reject",
+ "relax",
+ "release",
+ "relief",
+ "rely",
+ "remain",
+ "remember",
+ "remind",
+ "remove",
+ "render",
+ "renew",
+ "rent",
+ "reopen",
+ "repair",
+ "repeat",
+ "replace",
+ "report",
+ "require",
+ "rescue",
+ "resemble",
+ "resist",
+ "resource",
+ "response",
+ "result",
+ "retire",
+ "retreat",
+ "return",
+ "reunion",
+ "reveal",
+ "review",
+ "reward",
+ "rhythm",
+ "rib",
+ "ribbon",
+ "rice",
+ "rich",
+ "ride",
+ "ridge",
+ "rifle",
+ "right",
+ "rigid",
+ "ring",
+ "riot",
+ "ripple",
+ "risk",
+ "ritual",
+ "rival",
+ "river",
+ "road",
+ "roast",
+ "robot",
+ "robust",
+ "rocket",
+ "romance",
+ "roof",
+ "rookie",
+ "room",
+ "rose",
+ "rotate",
+ "rough",
+ "round",
+ "route",
+ "royal",
+ "rubber",
+ "rude",
+ "rug",
+ "rule",
+ "run",
+ "runway",
+ "rural",
+ "sad",
+ "saddle",
+ "sadness",
+ "safe",
+ "sail",
+ "salad",
+ "salmon",
+ "salon",
+ "salt",
+ "salute",
+ "same",
+ "sample",
+ "sand",
+ "satisfy",
+ "satoshi",
+ "sauce",
+ "sausage",
+ "save",
+ "say",
+ "scale",
+ "scan",
+ "scare",
+ "scatter",
+ "scene",
+ "scheme",
+ "school",
+ "science",
+ "scissors",
+ "scorpion",
+ "scout",
+ "scrap",
+ "screen",
+ "script",
+ "scrub",
+ "sea",
+ "search",
+ "season",
+ "seat",
+ "second",
+ "secret",
+ "section",
+ "security",
+ "seed",
+ "seek",
+ "segment",
+ "select",
+ "sell",
+ "seminar",
+ "senior",
+ "sense",
+ "sentence",
+ "series",
+ "service",
+ "session",
+ "settle",
+ "setup",
+ "seven",
+ "shadow",
+ "shaft",
+ "shallow",
+ "share",
+ "shed",
+ "shell",
+ "sheriff",
+ "shield",
+ "shift",
+ "shine",
+ "ship",
+ "shiver",
+ "shock",
+ "shoe",
+ "shoot",
+ "shop",
+ "short",
+ "shoulder",
+ "shove",
+ "shrimp",
+ "shrug",
+ "shuffle",
+ "shy",
+ "sibling",
+ "sick",
+ "side",
+ "siege",
+ "sight",
+ "sign",
+ "silent",
+ "silk",
+ "silly",
+ "silver",
+ "similar",
+ "simple",
+ "since",
+ "sing",
+ "siren",
+ "sister",
+ "situate",
+ "six",
+ "size",
+ "skate",
+ "sketch",
+ "ski",
+ "skill",
+ "skin",
+ "skirt",
+ "skull",
+ "slab",
+ "slam",
+ "sleep",
+ "slender",
+ "slice",
+ "slide",
+ "slight",
+ "slim",
+ "slogan",
+ "slot",
+ "slow",
+ "slush",
+ "small",
+ "smart",
+ "smile",
+ "smoke",
+ "smooth",
+ "snack",
+ "snake",
+ "snap",
+ "sniff",
+ "snow",
+ "soap",
+ "soccer",
+ "social",
+ "sock",
+ "soda",
+ "soft",
+ "solar",
+ "soldier",
+ "solid",
+ "solution",
+ "solve",
+ "someone",
+ "song",
+ "soon",
+ "sorry",
+ "sort",
+ "soul",
+ "sound",
+ "soup",
+ "source",
+ "south",
+ "space",
+ "spare",
+ "spatial",
+ "spawn",
+ "speak",
+ "special",
+ "speed",
+ "spell",
+ "spend",
+ "sphere",
+ "spice",
+ "spider",
+ "spike",
+ "spin",
+ "spirit",
+ "split",
+ "spoil",
+ "sponsor",
+ "spoon",
+ "sport",
+ "spot",
+ "spray",
+ "spread",
+ "spring",
+ "spy",
+ "square",
+ "squeeze",
+ "squirrel",
+ "stable",
+ "stadium",
+ "staff",
+ "stage",
+ "stairs",
+ "stamp",
+ "stand",
+ "start",
+ "state",
+ "stay",
+ "steak",
+ "steel",
+ "stem",
+ "step",
+ "stereo",
+ "stick",
+ "still",
+ "sting",
+ "stock",
+ "stomach",
+ "stone",
+ "stool",
+ "story",
+ "stove",
+ "strategy",
+ "street",
+ "strike",
+ "strong",
+ "struggle",
+ "student",
+ "stuff",
+ "stumble",
+ "style",
+ "subject",
+ "submit",
+ "subway",
+ "success",
+ "such",
+ "sudden",
+ "suffer",
+ "sugar",
+ "suggest",
+ "suit",
+ "summer",
+ "sun",
+ "sunny",
+ "sunset",
+ "super",
+ "supply",
+ "supreme",
+ "sure",
+ "surface",
+ "surge",
+ "surprise",
+ "surround",
+ "survey",
+ "suspect",
+ "sustain",
+ "swallow",
+ "swamp",
+ "swap",
+ "swarm",
+ "swear",
+ "sweet",
+ "swift",
+ "swim",
+ "swing",
+ "switch",
+ "sword",
+ "symbol",
+ "symptom",
+ "syrup",
+ "system",
+ "table",
+ "tackle",
+ "tag",
+ "tail",
+ "talent",
+ "talk",
+ "tank",
+ "tape",
+ "target",
+ "task",
+ "taste",
+ "tattoo",
+ "taxi",
+ "teach",
+ "team",
+ "tell",
+ "ten",
+ "tenant",
+ "tennis",
+ "tent",
+ "term",
+ "test",
+ "text",
+ "thank",
+ "that",
+ "theme",
+ "then",
+ "theory",
+ "there",
+ "they",
+ "thing",
+ "this",
+ "thought",
+ "three",
+ "thrive",
+ "throw",
+ "thumb",
+ "thunder",
+ "ticket",
+ "tide",
+ "tiger",
+ "tilt",
+ "timber",
+ "time",
+ "tiny",
+ "tip",
+ "tired",
+ "tissue",
+ "title",
+ "toast",
+ "tobacco",
+ "today",
+ "toddler",
+ "toe",
+ "together",
+ "toilet",
+ "token",
+ "tomato",
+ "tomorrow",
+ "tone",
+ "tongue",
+ "tonight",
+ "tool",
+ "tooth",
+ "top",
+ "topic",
+ "topple",
+ "torch",
+ "tornado",
+ "tortoise",
+ "toss",
+ "total",
+ "tourist",
+ "toward",
+ "tower",
+ "town",
+ "toy",
+ "track",
+ "trade",
+ "traffic",
+ "tragic",
+ "train",
+ "transfer",
+ "trap",
+ "trash",
+ "travel",
+ "tray",
+ "treat",
+ "tree",
+ "trend",
+ "trial",
+ "tribe",
+ "trick",
+ "trigger",
+ "trim",
+ "trip",
+ "trophy",
+ "trouble",
+ "truck",
+ "true",
+ "truly",
+ "trumpet",
+ "trust",
+ "truth",
+ "try",
+ "tube",
+ "tuition",
+ "tumble",
+ "tuna",
+ "tunnel",
+ "turkey",
+ "turn",
+ "turtle",
+ "twelve",
+ "twenty",
+ "twice",
+ "twin",
+ "twist",
+ "two",
+ "type",
+ "typical",
+ "ugly",
+ "umbrella",
+ "unable",
+ "unaware",
+ "uncle",
+ "uncover",
+ "under",
+ "undo",
+ "unfair",
+ "unfold",
+ "unhappy",
+ "uniform",
+ "unique",
+ "unit",
+ "universe",
+ "unknown",
+ "unlock",
+ "until",
+ "unusual",
+ "unveil",
+ "update",
+ "upgrade",
+ "uphold",
+ "upon",
+ "upper",
+ "upset",
+ "urban",
+ "urge",
+ "usage",
+ "use",
+ "used",
+ "useful",
+ "useless",
+ "usual",
+ "utility",
+ "vacant",
+ "vacuum",
+ "vague",
+ "valid",
+ "valley",
+ "valve",
+ "van",
+ "vanish",
+ "vapor",
+ "various",
+ "vast",
+ "vault",
+ "vehicle",
+ "velvet",
+ "vendor",
+ "venture",
+ "venue",
+ "verb",
+ "verify",
+ "version",
+ "very",
+ "vessel",
+ "veteran",
+ "viable",
+ "vibrant",
+ "vicious",
+ "victory",
+ "video",
+ "view",
+ "village",
+ "vintage",
+ "violin",
+ "virtual",
+ "virus",
+ "visa",
+ "visit",
+ "visual",
+ "vital",
+ "vivid",
+ "vocal",
+ "voice",
+ "void",
+ "volcano",
+ "volume",
+ "vote",
+ "voyage",
+ "wage",
+ "wagon",
+ "wait",
+ "walk",
+ "wall",
+ "walnut",
+ "want",
+ "warfare",
+ "warm",
+ "warrior",
+ "wash",
+ "wasp",
+ "waste",
+ "water",
+ "wave",
+ "way",
+ "wealth",
+ "weapon",
+ "wear",
+ "weasel",
+ "weather",
+ "web",
+ "wedding",
+ "weekend",
+ "weird",
+ "welcome",
+ "west",
+ "wet",
+ "whale",
+ "what",
+ "wheat",
+ "wheel",
+ "when",
+ "where",
+ "whip",
+ "whisper",
+ "wide",
+ "width",
+ "wife",
+ "wild",
+ "will",
+ "win",
+ "window",
+ "wine",
+ "wing",
+ "wink",
+ "winner",
+ "winter",
+ "wire",
+ "wisdom",
+ "wise",
+ "wish",
+ "witness",
+ "wolf",
+ "woman",
+ "wonder",
+ "wood",
+ "wool",
+ "word",
+ "work",
+ "world",
+ "worry",
+ "worth",
+ "wrap",
+ "wreck",
+ "wrestle",
+ "wrist",
+ "write",
+ "wrong",
+ "yard",
+ "year",
+ "yellow",
+ "you",
+ "young",
+ "youth",
+ "zebra",
+ "zero",
+ "zone",
+ "zoo",
+];
+function bytesToBitstring(bytes) {
+ return Array.from(bytes)
+ .map((byte) => byte.toString(2).padStart(8, "0"))
+ .join("");
+}
+function deriveChecksumBits(entropy) {
+ const entropyLengthBits = entropy.length * 8; // "ENT" (in bits)
+ const checksumLengthBits = entropyLengthBits / 32; // "CS" (in bits)
+ const hash = (0, sha_1.sha256)(entropy);
+ return bytesToBitstring(hash).slice(0, checksumLengthBits);
+}
+function bitstringToByte(bin) {
+ return parseInt(bin, 2);
+}
+const allowedEntropyLengths = [16, 20, 24, 28, 32];
+const allowedWordLengths = [12, 15, 18, 21, 24];
+function entropyToMnemonic(entropy) {
+ if (allowedEntropyLengths.indexOf(entropy.length) === -1) {
+ throw new Error("invalid input length");
+ }
+ const entropyBits = bytesToBitstring(entropy);
+ const checksumBits = deriveChecksumBits(entropy);
+ const bits = entropyBits + checksumBits;
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const chunks = bits.match(/(.{11})/g);
+ const words = chunks.map((binary) => {
+ const index = bitstringToByte(binary);
+ return wordlist[index];
+ });
+ return words.join(" ");
+}
+exports.entropyToMnemonic = entropyToMnemonic;
+const invalidNumberOfWorks = "Invalid number of words";
+const wordNotInWordlist = "Found word that is not in the wordlist";
+const invalidEntropy = "Invalid entropy";
+const invalidChecksum = "Invalid mnemonic checksum";
+function normalize(str) {
+ return str.normalize("NFKD");
+}
+function mnemonicToEntropy(mnemonic) {
+ const words = normalize(mnemonic).split(" ");
+ if (!allowedWordLengths.includes(words.length)) {
+ throw new Error(invalidNumberOfWorks);
+ }
+ // convert word indices to 11 bit binary strings
+ const bits = words
+ .map((word) => {
+ const index = wordlist.indexOf(word);
+ if (index === -1) {
+ throw new Error(wordNotInWordlist);
+ }
+ return index.toString(2).padStart(11, "0");
+ })
+ .join("");
+ // split the binary string into ENT/CS
+ const dividerIndex = Math.floor(bits.length / 33) * 32;
+ const entropyBits = bits.slice(0, dividerIndex);
+ const checksumBits = bits.slice(dividerIndex);
+ // calculate the checksum and compare
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const entropyBytes = entropyBits.match(/(.{1,8})/g).map(bitstringToByte);
+ if (entropyBytes.length < 16 || entropyBytes.length > 32 || entropyBytes.length % 4 !== 0) {
+ throw new Error(invalidEntropy);
+ }
+ const entropy = Uint8Array.from(entropyBytes);
+ const newChecksum = deriveChecksumBits(entropy);
+ if (newChecksum !== checksumBits) {
+ throw new Error(invalidChecksum);
+ }
+ return entropy;
+}
+exports.mnemonicToEntropy = mnemonicToEntropy;
+class EnglishMnemonic {
+ constructor(mnemonic) {
+ if (!EnglishMnemonic.mnemonicMatcher.test(mnemonic)) {
+ throw new Error("Invalid mnemonic format");
+ }
+ const words = mnemonic.split(" ");
+ const allowedWordsLengths = [12, 15, 18, 21, 24];
+ if (allowedWordsLengths.indexOf(words.length) === -1) {
+ throw new Error(`Invalid word count in mnemonic (allowed: ${allowedWordsLengths} got: ${words.length})`);
+ }
+ for (const word of words) {
+ if (EnglishMnemonic.wordlist.indexOf(word) === -1) {
+ throw new Error("Mnemonic contains invalid word");
+ }
+ }
+ // Throws with informative error message if mnemonic is not valid
+ mnemonicToEntropy(mnemonic);
+ this.data = mnemonic;
+ }
+ toString() {
+ return this.data;
+ }
+}
+exports.EnglishMnemonic = EnglishMnemonic;
+EnglishMnemonic.wordlist = wordlist;
+// list of space separated lower case words (1 or more)
+EnglishMnemonic.mnemonicMatcher = /^[a-z]+( [a-z]+)*$/;
+class Bip39 {
+ /**
+ * Encodes raw entropy of length 16, 20, 24, 28 or 32 bytes as an English mnemonic between 12 and 24 words.
+ *
+ * | Entropy | Words |
+ * |--------------------|-------|
+ * | 128 bit (16 bytes) | 12 |
+ * | 160 bit (20 bytes) | 15 |
+ * | 192 bit (24 bytes) | 18 |
+ * | 224 bit (28 bytes) | 21 |
+ * | 256 bit (32 bytes) | 24 |
+ *
+ *
+ * @see https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#generating-the-mnemonic
+ * @param entropy The entropy to be encoded. This must be cryptographically secure.
+ */
+ static encode(entropy) {
+ return new EnglishMnemonic(entropyToMnemonic(entropy));
+ }
+ static decode(mnemonic) {
+ return mnemonicToEntropy(mnemonic.toString());
+ }
+ static async mnemonicToSeed(mnemonic, password) {
+ const mnemonicBytes = (0, encoding_1.toUtf8)(normalize(mnemonic.toString()));
+ const salt = "mnemonic" + (password ? normalize(password) : "");
+ const saltBytes = (0, encoding_1.toUtf8)(salt);
+ return (0, pbkdf2_1.pbkdf2Sha512)(mnemonicBytes, saltBytes, 2048, 64);
+ }
+}
+exports.Bip39 = Bip39;
+//# sourceMappingURL=bip39.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js.map
new file mode 100644
index 00000000..f88d8c57
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/bip39.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bip39.js","sourceRoot":"","sources":["../src/bip39.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.d.ts
new file mode 100644
index 00000000..00c136c6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.d.ts
@@ -0,0 +1,5 @@
+export interface HashFunction {
+ readonly blockSize: number;
+ readonly update: (_: Uint8Array) => HashFunction;
+ readonly digest: () => Uint8Array;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js
new file mode 100644
index 00000000..6032c199
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=hash.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js.map
new file mode 100644
index 00000000..1159d990
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hash.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.d.ts
new file mode 100644
index 00000000..a2f35d9d
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.d.ts
@@ -0,0 +1,11 @@
+import { HashFunction } from "./hash";
+export declare class Hmac implements HashFunction {
+ readonly blockSize: number;
+ private readonly messageHasher;
+ private readonly oKeyPad;
+ private readonly iKeyPad;
+ private readonly hash;
+ constructor(hashFunctionConstructor: new () => H, originalKey: Uint8Array);
+ update(data: Uint8Array): Hmac;
+ digest(): Uint8Array;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js
new file mode 100644
index 00000000..2c68480b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Hmac = void 0;
+class Hmac {
+ constructor(hashFunctionConstructor, originalKey) {
+ // This implementation is based on https://en.wikipedia.org/wiki/HMAC#Implementation
+ // with the addition of incremental hashing support. Thus part of the algorithm
+ // is in the constructor and the rest in digest().
+ const blockSize = new hashFunctionConstructor().blockSize;
+ this.hash = (data) => new hashFunctionConstructor().update(data).digest();
+ let key = originalKey;
+ if (key.length > blockSize) {
+ key = this.hash(key);
+ }
+ if (key.length < blockSize) {
+ const zeroPadding = new Uint8Array(blockSize - key.length);
+ key = new Uint8Array([...key, ...zeroPadding]);
+ }
+ // eslint-disable-next-line no-bitwise
+ this.oKeyPad = key.map((keyByte) => keyByte ^ 0x5c);
+ // eslint-disable-next-line no-bitwise
+ this.iKeyPad = key.map((keyByte) => keyByte ^ 0x36);
+ this.messageHasher = new hashFunctionConstructor();
+ this.blockSize = blockSize;
+ this.update(this.iKeyPad);
+ }
+ update(data) {
+ this.messageHasher.update(data);
+ return this;
+ }
+ digest() {
+ const innerHash = this.messageHasher.digest();
+ return this.hash(new Uint8Array([...this.oKeyPad, ...innerHash]));
+ }
+}
+exports.Hmac = Hmac;
+//# sourceMappingURL=hmac.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js.map
new file mode 100644
index 00000000..aae9e272
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/hmac.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../src/hmac.ts"],"names":[],"mappings":";;;AAEA,MAAa,IAAI;IAQf,YAAmB,uBAAoC,EAAE,WAAuB;QAC9E,oFAAoF;QACpF,+EAA+E;QAC/E,kDAAkD;QAElD,MAAM,SAAS,GAAG,IAAI,uBAAuB,EAAE,CAAC,SAAS,CAAC;QAE1D,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,uBAAuB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1E,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;YAC1B,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB;QAED,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE;YAC1B,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3D,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;SAChD;QAED,sCAAsC;QACtC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACpD,sCAAsC;QACtC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AA9CD,oBA8CC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.d.ts
new file mode 100644
index 00000000..65ab90f3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.d.ts
@@ -0,0 +1,11 @@
+export { Bip39, EnglishMnemonic } from "./bip39";
+export { HashFunction } from "./hash";
+export { Hmac } from "./hmac";
+export { Keccak256, keccak256 } from "./keccak";
+export { Argon2id, Argon2idOptions, Ed25519, Ed25519Keypair, isArgon2idOptions, xchacha20NonceLength, Xchacha20poly1305Ietf, } from "./libsodium";
+export { Random } from "./random";
+export { Ripemd160, ripemd160 } from "./ripemd";
+export { Secp256k1, Secp256k1Keypair } from "./secp256k1";
+export { ExtendedSecp256k1Signature, Secp256k1Signature } from "./secp256k1signature";
+export { Sha256, sha256, Sha512, sha512 } from "./sha";
+export { HdPath, pathToString, Slip10, Slip10Curve, slip10CurveFromString, Slip10RawIndex, Slip10Result, stringToPath, } from "./slip10";
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js
new file mode 100644
index 00000000..efe4954e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js
@@ -0,0 +1,41 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.stringToPath = exports.Slip10RawIndex = exports.slip10CurveFromString = exports.Slip10Curve = exports.Slip10 = exports.pathToString = exports.sha512 = exports.Sha512 = exports.sha256 = exports.Sha256 = exports.Secp256k1Signature = exports.ExtendedSecp256k1Signature = exports.Secp256k1 = exports.ripemd160 = exports.Ripemd160 = exports.Random = exports.Xchacha20poly1305Ietf = exports.xchacha20NonceLength = exports.isArgon2idOptions = exports.Ed25519Keypair = exports.Ed25519 = exports.Argon2id = exports.keccak256 = exports.Keccak256 = exports.Hmac = exports.EnglishMnemonic = exports.Bip39 = void 0;
+var bip39_1 = require("./bip39");
+Object.defineProperty(exports, "Bip39", { enumerable: true, get: function () { return bip39_1.Bip39; } });
+Object.defineProperty(exports, "EnglishMnemonic", { enumerable: true, get: function () { return bip39_1.EnglishMnemonic; } });
+var hmac_1 = require("./hmac");
+Object.defineProperty(exports, "Hmac", { enumerable: true, get: function () { return hmac_1.Hmac; } });
+var keccak_1 = require("./keccak");
+Object.defineProperty(exports, "Keccak256", { enumerable: true, get: function () { return keccak_1.Keccak256; } });
+Object.defineProperty(exports, "keccak256", { enumerable: true, get: function () { return keccak_1.keccak256; } });
+var libsodium_1 = require("./libsodium");
+Object.defineProperty(exports, "Argon2id", { enumerable: true, get: function () { return libsodium_1.Argon2id; } });
+Object.defineProperty(exports, "Ed25519", { enumerable: true, get: function () { return libsodium_1.Ed25519; } });
+Object.defineProperty(exports, "Ed25519Keypair", { enumerable: true, get: function () { return libsodium_1.Ed25519Keypair; } });
+Object.defineProperty(exports, "isArgon2idOptions", { enumerable: true, get: function () { return libsodium_1.isArgon2idOptions; } });
+Object.defineProperty(exports, "xchacha20NonceLength", { enumerable: true, get: function () { return libsodium_1.xchacha20NonceLength; } });
+Object.defineProperty(exports, "Xchacha20poly1305Ietf", { enumerable: true, get: function () { return libsodium_1.Xchacha20poly1305Ietf; } });
+var random_1 = require("./random");
+Object.defineProperty(exports, "Random", { enumerable: true, get: function () { return random_1.Random; } });
+var ripemd_1 = require("./ripemd");
+Object.defineProperty(exports, "Ripemd160", { enumerable: true, get: function () { return ripemd_1.Ripemd160; } });
+Object.defineProperty(exports, "ripemd160", { enumerable: true, get: function () { return ripemd_1.ripemd160; } });
+var secp256k1_1 = require("./secp256k1");
+Object.defineProperty(exports, "Secp256k1", { enumerable: true, get: function () { return secp256k1_1.Secp256k1; } });
+var secp256k1signature_1 = require("./secp256k1signature");
+Object.defineProperty(exports, "ExtendedSecp256k1Signature", { enumerable: true, get: function () { return secp256k1signature_1.ExtendedSecp256k1Signature; } });
+Object.defineProperty(exports, "Secp256k1Signature", { enumerable: true, get: function () { return secp256k1signature_1.Secp256k1Signature; } });
+var sha_1 = require("./sha");
+Object.defineProperty(exports, "Sha256", { enumerable: true, get: function () { return sha_1.Sha256; } });
+Object.defineProperty(exports, "sha256", { enumerable: true, get: function () { return sha_1.sha256; } });
+Object.defineProperty(exports, "Sha512", { enumerable: true, get: function () { return sha_1.Sha512; } });
+Object.defineProperty(exports, "sha512", { enumerable: true, get: function () { return sha_1.sha512; } });
+var slip10_1 = require("./slip10");
+Object.defineProperty(exports, "pathToString", { enumerable: true, get: function () { return slip10_1.pathToString; } });
+Object.defineProperty(exports, "Slip10", { enumerable: true, get: function () { return slip10_1.Slip10; } });
+Object.defineProperty(exports, "Slip10Curve", { enumerable: true, get: function () { return slip10_1.Slip10Curve; } });
+Object.defineProperty(exports, "slip10CurveFromString", { enumerable: true, get: function () { return slip10_1.slip10CurveFromString; } });
+Object.defineProperty(exports, "Slip10RawIndex", { enumerable: true, get: function () { return slip10_1.Slip10RawIndex; } });
+Object.defineProperty(exports, "stringToPath", { enumerable: true, get: function () { return slip10_1.stringToPath; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js.map
new file mode 100644
index 00000000..4da9657e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiD;AAAxC,8FAAA,KAAK,OAAA;AAAE,wGAAA,eAAe,OAAA;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,mCAAgD;AAAvC,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC7B,yCAQqB;AAPnB,qGAAA,QAAQ,OAAA;AAER,oGAAA,OAAO,OAAA;AACP,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AAEvB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mCAAgD;AAAvC,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC7B,yCAA0D;AAAjD,sGAAA,SAAS,OAAA;AAClB,2DAAsF;AAA7E,gIAAA,0BAA0B,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AACvD,6BAAuD;AAA9C,6FAAA,MAAM,OAAA;AAAE,6FAAA,MAAM,OAAA;AAAE,6FAAA,MAAM,OAAA;AAAE,6FAAA,MAAM,OAAA;AACvC,mCASkB;AAPhB,sGAAA,YAAY,OAAA;AACZ,gGAAA,MAAM,OAAA;AACN,qGAAA,WAAW,OAAA;AACX,+GAAA,qBAAqB,OAAA;AACrB,wGAAA,cAAc,OAAA;AAEd,sGAAA,YAAY,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.d.ts
new file mode 100644
index 00000000..9177b27c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.d.ts
@@ -0,0 +1,10 @@
+import { HashFunction } from "./hash";
+export declare class Keccak256 implements HashFunction {
+ readonly blockSize: number;
+ private readonly impl;
+ constructor(firstData?: Uint8Array);
+ update(data: Uint8Array): Keccak256;
+ digest(): Uint8Array;
+}
+/** Convenience function equivalent to `new Keccak256(data).digest()` */
+export declare function keccak256(data: Uint8Array): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js
new file mode 100644
index 00000000..a652e615
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.keccak256 = exports.Keccak256 = void 0;
+const sha3_1 = require("@noble/hashes/sha3");
+const utils_1 = require("./utils");
+class Keccak256 {
+ constructor(firstData) {
+ this.blockSize = 512 / 8;
+ this.impl = sha3_1.keccak_256.create();
+ if (firstData) {
+ this.update(firstData);
+ }
+ }
+ update(data) {
+ this.impl.update((0, utils_1.toRealUint8Array)(data));
+ return this;
+ }
+ digest() {
+ return this.impl.digest();
+ }
+}
+exports.Keccak256 = Keccak256;
+/** Convenience function equivalent to `new Keccak256(data).digest()` */
+function keccak256(data) {
+ return new Keccak256(data).digest();
+}
+exports.keccak256 = keccak256;
+//# sourceMappingURL=keccak.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js.map
new file mode 100644
index 00000000..3f5af6ef
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/keccak.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"keccak.js","sourceRoot":"","sources":["../src/keccak.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAGhD,mCAA2C;AAE3C,MAAa,SAAS;IAKpB,YAAmB,SAAsB;QAJzB,cAAS,GAAG,GAAG,GAAG,CAAC,CAAC;QAEnB,SAAI,GAAG,iBAAU,CAAC,MAAM,EAAE,CAAC;QAG1C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;IACH,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAnBD,8BAmBC;AAED,wEAAwE;AACxE,SAAgB,SAAS,CAAC,IAAgB;IACxC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACtC,CAAC;AAFD,8BAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.d.ts
new file mode 100644
index 00000000..1dcb7c4a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.d.ts
@@ -0,0 +1,52 @@
+export interface Argon2idOptions {
+ /** Output length in bytes */
+ readonly outputLength: number;
+ /**
+ * An integer between 1 and 4294967295 representing the computational difficulty.
+ *
+ * @see https://libsodium.gitbook.io/doc/password_hashing/default_phf#key-derivation
+ */
+ readonly opsLimit: number;
+ /**
+ * Memory limit measured in KiB (like argon2 command line tool)
+ *
+ * Note: only approximately 16 MiB of memory are available using the non-sumo version of libsodium.js
+ *
+ * @see https://libsodium.gitbook.io/doc/password_hashing/default_phf#key-derivation
+ */
+ readonly memLimitKib: number;
+}
+export declare function isArgon2idOptions(thing: unknown): thing is Argon2idOptions;
+export declare class Argon2id {
+ static execute(password: string, salt: Uint8Array, options: Argon2idOptions): Promise;
+}
+export declare class Ed25519Keypair {
+ static fromLibsodiumPrivkey(libsodiumPrivkey: Uint8Array): Ed25519Keypair;
+ readonly privkey: Uint8Array;
+ readonly pubkey: Uint8Array;
+ constructor(privkey: Uint8Array, pubkey: Uint8Array);
+ toLibsodiumPrivkey(): Uint8Array;
+}
+export declare class Ed25519 {
+ /**
+ * Generates a keypair deterministically from a given 32 bytes seed.
+ *
+ * This seed equals the Ed25519 private key.
+ * For implementation details see crypto_sign_seed_keypair in
+ * https://download.libsodium.org/doc/public-key_cryptography/public-key_signatures.html
+ * and diagram on https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/
+ */
+ static makeKeypair(seed: Uint8Array): Promise;
+ static createSignature(message: Uint8Array, keyPair: Ed25519Keypair): Promise;
+ static verifySignature(signature: Uint8Array, message: Uint8Array, pubkey: Uint8Array): Promise;
+}
+/**
+ * Nonce length in bytes for all flavours of XChaCha20.
+ *
+ * @see https://libsodium.gitbook.io/doc/advanced/stream_ciphers/xchacha20#notes
+ */
+export declare const xchacha20NonceLength = 24;
+export declare class Xchacha20poly1305Ietf {
+ static encrypt(message: Uint8Array, key: Uint8Array, nonce: Uint8Array): Promise;
+ static decrypt(ciphertext: Uint8Array, key: Uint8Array, nonce: Uint8Array): Promise;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js
new file mode 100644
index 00000000..401ba569
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js
@@ -0,0 +1,98 @@
+"use strict";
+// Keep all classes requiring libsodium-js in one file as having multiple
+// requiring of the libsodium-wrappers module currently crashes browsers
+//
+// libsodium.js API: https://gist.github.com/webmaster128/b2dbe6d54d36dd168c9fabf441b9b09c
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Xchacha20poly1305Ietf = exports.xchacha20NonceLength = exports.Ed25519 = exports.Ed25519Keypair = exports.Argon2id = exports.isArgon2idOptions = void 0;
+const utils_1 = require("@cosmjs/utils");
+// Using crypto_pwhash requires sumo. Once we migrate to a standalone
+// Argon2 implementation, we can use the normal libsodium-wrappers
+// again: https://github.com/cosmos/cosmjs/issues/1031
+const libsodium_wrappers_sumo_1 = __importDefault(require("libsodium-wrappers-sumo"));
+function isArgon2idOptions(thing) {
+ if (!(0, utils_1.isNonNullObject)(thing))
+ return false;
+ if (typeof thing.outputLength !== "number")
+ return false;
+ if (typeof thing.opsLimit !== "number")
+ return false;
+ if (typeof thing.memLimitKib !== "number")
+ return false;
+ return true;
+}
+exports.isArgon2idOptions = isArgon2idOptions;
+class Argon2id {
+ static async execute(password, salt, options) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ return libsodium_wrappers_sumo_1.default.crypto_pwhash(options.outputLength, password, salt, // libsodium only supports 16 byte salts and will throw when you don't respect that
+ options.opsLimit, options.memLimitKib * 1024, libsodium_wrappers_sumo_1.default.crypto_pwhash_ALG_ARGON2ID13);
+ }
+}
+exports.Argon2id = Argon2id;
+class Ed25519Keypair {
+ // a libsodium privkey has the format ` + `
+ static fromLibsodiumPrivkey(libsodiumPrivkey) {
+ if (libsodiumPrivkey.length !== 64) {
+ throw new Error(`Unexpected key length ${libsodiumPrivkey.length}. Must be 64.`);
+ }
+ return new Ed25519Keypair(libsodiumPrivkey.slice(0, 32), libsodiumPrivkey.slice(32, 64));
+ }
+ constructor(privkey, pubkey) {
+ this.privkey = privkey;
+ this.pubkey = pubkey;
+ }
+ toLibsodiumPrivkey() {
+ return new Uint8Array([...this.privkey, ...this.pubkey]);
+ }
+}
+exports.Ed25519Keypair = Ed25519Keypair;
+class Ed25519 {
+ /**
+ * Generates a keypair deterministically from a given 32 bytes seed.
+ *
+ * This seed equals the Ed25519 private key.
+ * For implementation details see crypto_sign_seed_keypair in
+ * https://download.libsodium.org/doc/public-key_cryptography/public-key_signatures.html
+ * and diagram on https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/
+ */
+ static async makeKeypair(seed) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ const keypair = libsodium_wrappers_sumo_1.default.crypto_sign_seed_keypair(seed);
+ return Ed25519Keypair.fromLibsodiumPrivkey(keypair.privateKey);
+ }
+ static async createSignature(message, keyPair) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ return libsodium_wrappers_sumo_1.default.crypto_sign_detached(message, keyPair.toLibsodiumPrivkey());
+ }
+ static async verifySignature(signature, message, pubkey) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ return libsodium_wrappers_sumo_1.default.crypto_sign_verify_detached(signature, message, pubkey);
+ }
+}
+exports.Ed25519 = Ed25519;
+/**
+ * Nonce length in bytes for all flavours of XChaCha20.
+ *
+ * @see https://libsodium.gitbook.io/doc/advanced/stream_ciphers/xchacha20#notes
+ */
+exports.xchacha20NonceLength = 24;
+class Xchacha20poly1305Ietf {
+ static async encrypt(message, key, nonce) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ const additionalData = null;
+ return libsodium_wrappers_sumo_1.default.crypto_aead_xchacha20poly1305_ietf_encrypt(message, additionalData, null, // secret nonce: unused and should be null (https://download.libsodium.org/doc/secret-key_cryptography/aead/chacha20-poly1305/xchacha20-poly1305_construction)
+ nonce, key);
+ }
+ static async decrypt(ciphertext, key, nonce) {
+ await libsodium_wrappers_sumo_1.default.ready;
+ const additionalData = null;
+ return libsodium_wrappers_sumo_1.default.crypto_aead_xchacha20poly1305_ietf_decrypt(null, // secret nonce: unused and should be null (https://download.libsodium.org/doc/secret-key_cryptography/aead/chacha20-poly1305/xchacha20-poly1305_construction)
+ ciphertext, additionalData, nonce, key);
+ }
+}
+exports.Xchacha20poly1305Ietf = Xchacha20poly1305Ietf;
+//# sourceMappingURL=libsodium.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js.map
new file mode 100644
index 00000000..c77815ae
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/libsodium.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"libsodium.js","sourceRoot":"","sources":["../src/libsodium.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,wEAAwE;AACxE,EAAE;AACF,0FAA0F;;;;;;AAE1F,yCAAgD;AAChD,qEAAqE;AACrE,kEAAkE;AAClE,sDAAsD;AACtD,sFAA6C;AAqB7C,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,OAAQ,KAAyB,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,OAAQ,KAAyB,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,OAAQ,KAAyB,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAND,8CAMC;AAED,MAAa,QAAQ;IACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,QAAgB,EAChB,IAAgB,EAChB,OAAwB;QAExB,MAAM,iCAAM,CAAC,KAAK,CAAC;QACnB,OAAO,iCAAM,CAAC,aAAa,CACzB,OAAO,CAAC,YAAY,EACpB,QAAQ,EACR,IAAI,EAAE,mFAAmF;QACzF,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,WAAW,GAAG,IAAI,EAC1B,iCAAM,CAAC,4BAA4B,CACpC,CAAC;IACJ,CAAC;CACF;AAhBD,4BAgBC;AAED,MAAa,cAAc;IACzB,4EAA4E;IACrE,MAAM,CAAC,oBAAoB,CAAC,gBAA4B;QAC7D,IAAI,gBAAgB,CAAC,MAAM,KAAK,EAAE,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,gBAAgB,CAAC,MAAM,eAAe,CAAC,CAAC;SAClF;QACD,OAAO,IAAI,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAKD,YAAmB,OAAmB,EAAE,MAAkB;QACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,kBAAkB;QACvB,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AApBD,wCAoBC;AAED,MAAa,OAAO;IAClB;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAgB;QAC9C,MAAM,iCAAM,CAAC,KAAK,CAAC;QACnB,MAAM,OAAO,GAAG,iCAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAmB,EAAE,OAAuB;QAC9E,MAAM,iCAAM,CAAC,KAAK,CAAC;QACnB,OAAO,iCAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe,CACjC,SAAqB,EACrB,OAAmB,EACnB,MAAkB;QAElB,MAAM,iCAAM,CAAC,KAAK,CAAC;QACnB,OAAO,iCAAM,CAAC,2BAA2B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;CACF;AA5BD,0BA4BC;AAED;;;;GAIG;AACU,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAa,qBAAqB;IACzB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAmB,EAAE,GAAe,EAAE,KAAiB;QACjF,MAAM,iCAAM,CAAC,KAAK,CAAC;QAEnB,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,OAAO,iCAAM,CAAC,0CAA0C,CACtD,OAAO,EACP,cAAc,EACd,IAAI,EAAE,8JAA8J;QACpK,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,UAAsB,EACtB,GAAe,EACf,KAAiB;QAEjB,MAAM,iCAAM,CAAC,KAAK,CAAC;QAEnB,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,OAAO,iCAAM,CAAC,0CAA0C,CACtD,IAAI,EAAE,8JAA8J;QACpK,UAAU,EACV,cAAc,EACd,KAAK,EACL,GAAG,CACJ,CAAC;IACJ,CAAC;CACF;AAhCD,sDAgCC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.d.ts
new file mode 100644
index 00000000..cf062c34
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.d.ts
@@ -0,0 +1,20 @@
+/**
+ * Returns the Node.js crypto module when available and `undefined`
+ * otherwise.
+ *
+ * Detects an unimplemented fallback module from Webpack 5 and returns
+ * `undefined` in that case.
+ */
+export declare function getNodeCrypto(): Promise;
+export declare function getSubtle(): Promise;
+export declare function pbkdf2Sha512Subtle(subtle: any, secret: Uint8Array, salt: Uint8Array, iterations: number, keylen: number): Promise;
+/**
+ * Implements pbkdf2-sha512 using the Node.js crypro module (`import "crypto"`).
+ * This does not use subtle from [Crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto).
+ */
+export declare function pbkdf2Sha512NodeCrypto(nodeCrypto: any, secret: Uint8Array, salt: Uint8Array, iterations: number, keylen: number): Promise;
+export declare function pbkdf2Sha512Noble(secret: Uint8Array, salt: Uint8Array, iterations: number, keylen: number): Promise;
+/**
+ * A pbkdf2 implementation for BIP39. This is not exported at package level and thus a private API.
+ */
+export declare function pbkdf2Sha512(secret: Uint8Array, salt: Uint8Array, iterations: number, keylen: number): Promise;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js
new file mode 100644
index 00000000..23a00d1e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js
@@ -0,0 +1,129 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.pbkdf2Sha512 = exports.pbkdf2Sha512Noble = exports.pbkdf2Sha512NodeCrypto = exports.pbkdf2Sha512Subtle = exports.getSubtle = exports.getNodeCrypto = void 0;
+const utils_1 = require("@cosmjs/utils");
+const pbkdf2_1 = require("@noble/hashes/pbkdf2");
+const sha512_1 = require("@noble/hashes/sha512");
+/**
+ * Returns the Node.js crypto module when available and `undefined`
+ * otherwise.
+ *
+ * Detects an unimplemented fallback module from Webpack 5 and returns
+ * `undefined` in that case.
+ */
+async function getNodeCrypto() {
+ try {
+ const nodeCrypto = await Promise.resolve().then(() => __importStar(require("crypto")));
+ // We get `Object{default: Object{}}` as a fallback when using
+ // `crypto: false` in Webpack 5, which we interprete as unavailable.
+ if (typeof nodeCrypto === "object" && Object.keys(nodeCrypto).length <= 1) {
+ return undefined;
+ }
+ return nodeCrypto;
+ }
+ catch {
+ return undefined;
+ }
+}
+exports.getNodeCrypto = getNodeCrypto;
+async function getSubtle() {
+ // From Node.js 15 onwards, webcrypto is available in globalThis.
+ // In version 15 and 16 this was stored under the webcrypto key.
+ // With Node.js 17 it was moved to the same locations where browsers
+ // make it available.
+ // Loading `require("crypto")` here seems unnecessary since it only
+ // causes issues with bundlers and does not increase compatibility.
+ // Browsers and Node.js 17+
+ let subtle = globalThis?.crypto?.subtle;
+ // Node.js 15+
+ if (!subtle)
+ subtle = globalThis?.crypto?.webcrypto?.subtle;
+ return subtle;
+}
+exports.getSubtle = getSubtle;
+async function pbkdf2Sha512Subtle(
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+subtle, secret, salt, iterations, keylen) {
+ (0, utils_1.assert)(subtle, "Argument subtle is falsy");
+ (0, utils_1.assert)(typeof subtle === "object", "Argument subtle is not of type object");
+ (0, utils_1.assert)(typeof subtle.importKey === "function", "subtle.importKey is not a function");
+ (0, utils_1.assert)(typeof subtle.deriveBits === "function", "subtle.deriveBits is not a function");
+ return subtle.importKey("raw", secret, { name: "PBKDF2" }, false, ["deriveBits"]).then((key) => subtle
+ .deriveBits({
+ name: "PBKDF2",
+ salt: salt,
+ iterations: iterations,
+ hash: { name: "SHA-512" },
+ }, key, keylen * 8)
+ .then((buffer) => new Uint8Array(buffer)));
+}
+exports.pbkdf2Sha512Subtle = pbkdf2Sha512Subtle;
+/**
+ * Implements pbkdf2-sha512 using the Node.js crypro module (`import "crypto"`).
+ * This does not use subtle from [Crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto).
+ */
+async function pbkdf2Sha512NodeCrypto(
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+nodeCrypto, secret, salt, iterations, keylen) {
+ (0, utils_1.assert)(nodeCrypto, "Argument nodeCrypto is falsy");
+ (0, utils_1.assert)(typeof nodeCrypto === "object", "Argument nodeCrypto is not of type object");
+ (0, utils_1.assert)(typeof nodeCrypto.pbkdf2 === "function", "nodeCrypto.pbkdf2 is not a function");
+ return new Promise((resolve, reject) => {
+ nodeCrypto.pbkdf2(secret, salt, iterations, keylen, "sha512", (error, result) => {
+ if (error) {
+ reject(error);
+ }
+ else {
+ resolve(Uint8Array.from(result));
+ }
+ });
+ });
+}
+exports.pbkdf2Sha512NodeCrypto = pbkdf2Sha512NodeCrypto;
+async function pbkdf2Sha512Noble(secret, salt, iterations, keylen) {
+ return (0, pbkdf2_1.pbkdf2Async)(sha512_1.sha512, secret, salt, { c: iterations, dkLen: keylen });
+}
+exports.pbkdf2Sha512Noble = pbkdf2Sha512Noble;
+/**
+ * A pbkdf2 implementation for BIP39. This is not exported at package level and thus a private API.
+ */
+async function pbkdf2Sha512(secret, salt, iterations, keylen) {
+ const subtle = await getSubtle();
+ if (subtle) {
+ return pbkdf2Sha512Subtle(subtle, secret, salt, iterations, keylen);
+ }
+ else {
+ const nodeCrypto = await getNodeCrypto();
+ if (nodeCrypto) {
+ return pbkdf2Sha512NodeCrypto(nodeCrypto, secret, salt, iterations, keylen);
+ }
+ else {
+ return pbkdf2Sha512Noble(secret, salt, iterations, keylen);
+ }
+ }
+}
+exports.pbkdf2Sha512 = pbkdf2Sha512;
+//# sourceMappingURL=pbkdf2.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js.map
new file mode 100644
index 00000000..b4b0b8c0
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/pbkdf2.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["../src/pbkdf2.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.d.ts
new file mode 100644
index 00000000..71ac08a7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.d.ts
@@ -0,0 +1,6 @@
+export declare class Random {
+ /**
+ * Returns `count` cryptographically secure random bytes
+ */
+ static getBytes(count: number): Uint8Array;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js
new file mode 100644
index 00000000..26ca2488
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Random = void 0;
+class Random {
+ /**
+ * Returns `count` cryptographically secure random bytes
+ */
+ static getBytes(count) {
+ try {
+ const globalObject = typeof window === "object" ? window : self;
+ const cryptoApi = typeof globalObject.crypto !== "undefined" ? globalObject.crypto : globalObject.msCrypto;
+ const out = new Uint8Array(count);
+ cryptoApi.getRandomValues(out);
+ return out;
+ }
+ catch {
+ try {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ const crypto = require("crypto");
+ return new Uint8Array([...crypto.randomBytes(count)]);
+ }
+ catch {
+ throw new Error("No secure random number generator found");
+ }
+ }
+ }
+}
+exports.Random = Random;
+//# sourceMappingURL=random.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js.map
new file mode 100644
index 00000000..5dde5cf6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/random.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":";;;AAGA,MAAa,MAAM;IACjB;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAa;QAClC,IAAI;YACF,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,MAAM,SAAS,GACb,OAAO,YAAY,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;YAE3F,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;SACZ;QAAC,MAAM;YACN,IAAI;gBACF,8DAA8D;gBAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACjC,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACvD;YAAC,MAAM;gBACN,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAC5D;SACF;IACH,CAAC;CACF;AAvBD,wBAuBC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.d.ts
new file mode 100644
index 00000000..8bd6acac
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.d.ts
@@ -0,0 +1,10 @@
+import { HashFunction } from "./hash";
+export declare class Ripemd160 implements HashFunction {
+ readonly blockSize: number;
+ private readonly impl;
+ constructor(firstData?: Uint8Array);
+ update(data: Uint8Array): Ripemd160;
+ digest(): Uint8Array;
+}
+/** Convenience function equivalent to `new Ripemd160(data).digest()` */
+export declare function ripemd160(data: Uint8Array): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js
new file mode 100644
index 00000000..f8240a8d
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ripemd160 = exports.Ripemd160 = void 0;
+const ripemd160_1 = require("@noble/hashes/ripemd160");
+const utils_1 = require("./utils");
+class Ripemd160 {
+ constructor(firstData) {
+ this.blockSize = 512 / 8;
+ this.impl = ripemd160_1.ripemd160.create();
+ if (firstData) {
+ this.update(firstData);
+ }
+ }
+ update(data) {
+ this.impl.update((0, utils_1.toRealUint8Array)(data));
+ return this;
+ }
+ digest() {
+ return this.impl.digest();
+ }
+}
+exports.Ripemd160 = Ripemd160;
+/** Convenience function equivalent to `new Ripemd160(data).digest()` */
+function ripemd160(data) {
+ return new Ripemd160(data).digest();
+}
+exports.ripemd160 = ripemd160;
+//# sourceMappingURL=ripemd.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js.map
new file mode 100644
index 00000000..2849280b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/ripemd.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ripemd.js","sourceRoot":"","sources":["../src/ripemd.ts"],"names":[],"mappings":";;;AAAA,uDAAsE;AAGtE,mCAA2C;AAE3C,MAAa,SAAS;IAKpB,YAAmB,SAAsB;QAJzB,cAAS,GAAG,GAAG,GAAG,CAAC,CAAC;QAEnB,SAAI,GAAG,qBAAc,CAAC,MAAM,EAAE,CAAC;QAG9C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;IACH,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAnBD,8BAmBC;AAED,wEAAwE;AACxE,SAAgB,SAAS,CAAC,IAAgB;IACxC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACtC,CAAC;AAFD,8BAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.d.ts
new file mode 100644
index 00000000..a86f5196
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.d.ts
@@ -0,0 +1,45 @@
+import { ExtendedSecp256k1Signature, Secp256k1Signature } from "./secp256k1signature";
+export interface Secp256k1Keypair {
+ /** A 32 byte private key */
+ readonly pubkey: Uint8Array;
+ /**
+ * A raw secp256k1 public key.
+ *
+ * The type itself does not give you any guarantee if this is
+ * compressed or uncompressed. If you are unsure where the data
+ * is coming from, use `Secp256k1.compressPubkey` or
+ * `Secp256k1.uncompressPubkey` (both idempotent) before processing it.
+ */
+ readonly privkey: Uint8Array;
+}
+export declare class Secp256k1 {
+ /**
+ * Takes a 32 byte private key and returns a privkey/pubkey pair.
+ *
+ * The resulting pubkey is uncompressed. For the use in Cosmos it should
+ * be compressed first using `Secp256k1.compressPubkey`.
+ */
+ static makeKeypair(privkey: Uint8Array): Promise;
+ /**
+ * Creates a signature that is
+ * - deterministic (RFC 6979)
+ * - lowS signature
+ * - DER encoded
+ */
+ static createSignature(messageHash: Uint8Array, privkey: Uint8Array): Promise;
+ static verifySignature(signature: Secp256k1Signature, messageHash: Uint8Array, pubkey: Uint8Array): Promise;
+ static recoverPubkey(signature: ExtendedSecp256k1Signature, messageHash: Uint8Array): Uint8Array;
+ /**
+ * Takes a compressed or uncompressed pubkey and return a compressed one.
+ *
+ * This function is idempotent.
+ */
+ static compressPubkey(pubkey: Uint8Array): Uint8Array;
+ /**
+ * Takes a compressed or uncompressed pubkey and returns an uncompressed one.
+ *
+ * This function is idempotent.
+ */
+ static uncompressPubkey(pubkey: Uint8Array): Uint8Array;
+ static trimRecoveryByte(signature: Uint8Array): Uint8Array;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js
new file mode 100644
index 00000000..b045aafc
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js
@@ -0,0 +1,142 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Secp256k1 = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+const bn_js_1 = __importDefault(require("bn.js"));
+const elliptic_1 = __importDefault(require("elliptic"));
+const secp256k1signature_1 = require("./secp256k1signature");
+const secp256k1 = new elliptic_1.default.ec("secp256k1");
+const secp256k1N = new bn_js_1.default("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", "hex");
+class Secp256k1 {
+ /**
+ * Takes a 32 byte private key and returns a privkey/pubkey pair.
+ *
+ * The resulting pubkey is uncompressed. For the use in Cosmos it should
+ * be compressed first using `Secp256k1.compressPubkey`.
+ */
+ static async makeKeypair(privkey) {
+ if (privkey.length !== 32) {
+ // is this check missing in secp256k1.validatePrivateKey?
+ // https://github.com/bitjson/bitcoin-ts/issues/4
+ throw new Error("input data is not a valid secp256k1 private key");
+ }
+ const keypair = secp256k1.keyFromPrivate(privkey);
+ if (keypair.validate().result !== true) {
+ throw new Error("input data is not a valid secp256k1 private key");
+ }
+ // range test that is not part of the elliptic implementation
+ const privkeyAsBigInteger = new bn_js_1.default(privkey);
+ if (privkeyAsBigInteger.gte(secp256k1N)) {
+ // not strictly smaller than N
+ throw new Error("input data is not a valid secp256k1 private key");
+ }
+ const out = {
+ privkey: (0, encoding_1.fromHex)(keypair.getPrivate("hex")),
+ // encodes uncompressed as
+ // - 1-byte prefix "04"
+ // - 32-byte x coordinate
+ // - 32-byte y coordinate
+ pubkey: Uint8Array.from(keypair.getPublic("array")),
+ };
+ return out;
+ }
+ /**
+ * Creates a signature that is
+ * - deterministic (RFC 6979)
+ * - lowS signature
+ * - DER encoded
+ */
+ static async createSignature(messageHash, privkey) {
+ if (messageHash.length === 0) {
+ throw new Error("Message hash must not be empty");
+ }
+ if (messageHash.length > 32) {
+ throw new Error("Message hash length must not exceed 32 bytes");
+ }
+ const keypair = secp256k1.keyFromPrivate(privkey);
+ // the `canonical` option ensures creation of lowS signature representations
+ const { r, s, recoveryParam } = keypair.sign(messageHash, { canonical: true });
+ if (typeof recoveryParam !== "number")
+ throw new Error("Recovery param missing");
+ return new secp256k1signature_1.ExtendedSecp256k1Signature(Uint8Array.from(r.toArray()), Uint8Array.from(s.toArray()), recoveryParam);
+ }
+ static async verifySignature(signature, messageHash, pubkey) {
+ if (messageHash.length === 0) {
+ throw new Error("Message hash must not be empty");
+ }
+ if (messageHash.length > 32) {
+ throw new Error("Message hash length must not exceed 32 bytes");
+ }
+ const keypair = secp256k1.keyFromPublic(pubkey);
+ // From https://github.com/indutny/elliptic:
+ //
+ // Sign the message's hash (input must be an array, or a hex-string)
+ //
+ // Signature MUST be either:
+ // 1) DER-encoded signature as hex-string; or
+ // 2) DER-encoded signature as buffer; or
+ // 3) object with two hex-string properties (r and s); or
+ // 4) object with two buffer properties (r and s)
+ //
+ // Uint8Array is not a Buffer, but elliptic seems to be happy with the interface
+ // common to both types. Uint8Array is not an array of ints but the interface is
+ // similar
+ try {
+ return keypair.verify(messageHash, signature.toDer());
+ }
+ catch (error) {
+ return false;
+ }
+ }
+ static recoverPubkey(signature, messageHash) {
+ const signatureForElliptic = { r: (0, encoding_1.toHex)(signature.r()), s: (0, encoding_1.toHex)(signature.s()) };
+ const point = secp256k1.recoverPubKey(messageHash, signatureForElliptic, signature.recovery);
+ const keypair = secp256k1.keyFromPublic(point);
+ return (0, encoding_1.fromHex)(keypair.getPublic(false, "hex"));
+ }
+ /**
+ * Takes a compressed or uncompressed pubkey and return a compressed one.
+ *
+ * This function is idempotent.
+ */
+ static compressPubkey(pubkey) {
+ switch (pubkey.length) {
+ case 33:
+ return pubkey;
+ case 65:
+ return Uint8Array.from(secp256k1.keyFromPublic(pubkey).getPublic(true, "array"));
+ default:
+ throw new Error("Invalid pubkey length");
+ }
+ }
+ /**
+ * Takes a compressed or uncompressed pubkey and returns an uncompressed one.
+ *
+ * This function is idempotent.
+ */
+ static uncompressPubkey(pubkey) {
+ switch (pubkey.length) {
+ case 33:
+ return Uint8Array.from(secp256k1.keyFromPublic(pubkey).getPublic(false, "array"));
+ case 65:
+ return pubkey;
+ default:
+ throw new Error("Invalid pubkey length");
+ }
+ }
+ static trimRecoveryByte(signature) {
+ switch (signature.length) {
+ case 64:
+ return signature;
+ case 65:
+ return signature.slice(0, 64);
+ default:
+ throw new Error("Invalid signature length");
+ }
+ }
+}
+exports.Secp256k1 = Secp256k1;
+//# sourceMappingURL=secp256k1.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js.map
new file mode 100644
index 00000000..6c4ee847
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["../src/secp256k1.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.d.ts
new file mode 100644
index 00000000..8d914b18
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.d.ts
@@ -0,0 +1,35 @@
+export declare class Secp256k1Signature {
+ /**
+ * Takes the pair of integers (r, s) as 2x32 byte of binary data.
+ *
+ * Note: This is the format Cosmos SDK uses natively.
+ *
+ * @param data a 64 byte value containing integers r and s.
+ */
+ static fromFixedLength(data: Uint8Array): Secp256k1Signature;
+ static fromDer(data: Uint8Array): Secp256k1Signature;
+ private readonly data;
+ constructor(r: Uint8Array, s: Uint8Array);
+ r(length?: number): Uint8Array;
+ s(length?: number): Uint8Array;
+ toFixedLength(): Uint8Array;
+ toDer(): Uint8Array;
+}
+/**
+ * A Secp256k1Signature plus the recovery parameter
+ */
+export declare class ExtendedSecp256k1Signature extends Secp256k1Signature {
+ /**
+ * Decode extended signature from the simple fixed length encoding
+ * described in toFixedLength().
+ */
+ static fromFixedLength(data: Uint8Array): ExtendedSecp256k1Signature;
+ readonly recovery: number;
+ constructor(r: Uint8Array, s: Uint8Array, recovery: number);
+ /**
+ * A simple custom encoding that encodes the extended signature as
+ * r (32 bytes) | s (32 bytes) | recovery param (1 byte)
+ * where | denotes concatenation of bonary data.
+ */
+ toFixedLength(): Uint8Array;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js
new file mode 100644
index 00000000..32b2c2f6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js
@@ -0,0 +1,153 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ExtendedSecp256k1Signature = exports.Secp256k1Signature = void 0;
+function trimLeadingNullBytes(inData) {
+ let numberOfLeadingNullBytes = 0;
+ for (const byte of inData) {
+ if (byte === 0x00) {
+ numberOfLeadingNullBytes++;
+ }
+ else {
+ break;
+ }
+ }
+ return inData.slice(numberOfLeadingNullBytes);
+}
+const derTagInteger = 0x02;
+class Secp256k1Signature {
+ /**
+ * Takes the pair of integers (r, s) as 2x32 byte of binary data.
+ *
+ * Note: This is the format Cosmos SDK uses natively.
+ *
+ * @param data a 64 byte value containing integers r and s.
+ */
+ static fromFixedLength(data) {
+ if (data.length !== 64) {
+ throw new Error(`Got invalid data length: ${data.length}. Expected 2x 32 bytes for the pair (r, s)`);
+ }
+ return new Secp256k1Signature(trimLeadingNullBytes(data.slice(0, 32)), trimLeadingNullBytes(data.slice(32, 64)));
+ }
+ static fromDer(data) {
+ let pos = 0;
+ if (data[pos++] !== 0x30) {
+ throw new Error("Prefix 0x30 expected");
+ }
+ const bodyLength = data[pos++];
+ if (data.length - pos !== bodyLength) {
+ throw new Error("Data length mismatch detected");
+ }
+ // r
+ const rTag = data[pos++];
+ if (rTag !== derTagInteger) {
+ throw new Error("INTEGER tag expected");
+ }
+ const rLength = data[pos++];
+ if (rLength >= 0x80) {
+ throw new Error("Decoding length values above 127 not supported");
+ }
+ const rData = data.slice(pos, pos + rLength);
+ pos += rLength;
+ // s
+ const sTag = data[pos++];
+ if (sTag !== derTagInteger) {
+ throw new Error("INTEGER tag expected");
+ }
+ const sLength = data[pos++];
+ if (sLength >= 0x80) {
+ throw new Error("Decoding length values above 127 not supported");
+ }
+ const sData = data.slice(pos, pos + sLength);
+ pos += sLength;
+ return new Secp256k1Signature(
+ // r/s data can contain leading 0 bytes to express integers being non-negative in DER
+ trimLeadingNullBytes(rData), trimLeadingNullBytes(sData));
+ }
+ constructor(r, s) {
+ if (r.length > 32 || r.length === 0 || r[0] === 0x00) {
+ throw new Error("Unsigned integer r must be encoded as unpadded big endian.");
+ }
+ if (s.length > 32 || s.length === 0 || s[0] === 0x00) {
+ throw new Error("Unsigned integer s must be encoded as unpadded big endian.");
+ }
+ this.data = {
+ r: r,
+ s: s,
+ };
+ }
+ r(length) {
+ if (length === undefined) {
+ return this.data.r;
+ }
+ else {
+ const paddingLength = length - this.data.r.length;
+ if (paddingLength < 0) {
+ throw new Error("Length too small to hold parameter r");
+ }
+ const padding = new Uint8Array(paddingLength);
+ return new Uint8Array([...padding, ...this.data.r]);
+ }
+ }
+ s(length) {
+ if (length === undefined) {
+ return this.data.s;
+ }
+ else {
+ const paddingLength = length - this.data.s.length;
+ if (paddingLength < 0) {
+ throw new Error("Length too small to hold parameter s");
+ }
+ const padding = new Uint8Array(paddingLength);
+ return new Uint8Array([...padding, ...this.data.s]);
+ }
+ }
+ toFixedLength() {
+ return new Uint8Array([...this.r(32), ...this.s(32)]);
+ }
+ toDer() {
+ // DER supports negative integers but our data is unsigned. Thus we need to prepend
+ // a leading 0 byte when the higest bit is set to differentiate nagative values
+ const rEncoded = this.data.r[0] >= 0x80 ? new Uint8Array([0, ...this.data.r]) : this.data.r;
+ const sEncoded = this.data.s[0] >= 0x80 ? new Uint8Array([0, ...this.data.s]) : this.data.s;
+ const rLength = rEncoded.length;
+ const sLength = sEncoded.length;
+ const data = new Uint8Array([derTagInteger, rLength, ...rEncoded, derTagInteger, sLength, ...sEncoded]);
+ return new Uint8Array([0x30, data.length, ...data]);
+ }
+}
+exports.Secp256k1Signature = Secp256k1Signature;
+/**
+ * A Secp256k1Signature plus the recovery parameter
+ */
+class ExtendedSecp256k1Signature extends Secp256k1Signature {
+ /**
+ * Decode extended signature from the simple fixed length encoding
+ * described in toFixedLength().
+ */
+ static fromFixedLength(data) {
+ if (data.length !== 65) {
+ throw new Error(`Got invalid data length ${data.length}. Expected 32 + 32 + 1`);
+ }
+ return new ExtendedSecp256k1Signature(trimLeadingNullBytes(data.slice(0, 32)), trimLeadingNullBytes(data.slice(32, 64)), data[64]);
+ }
+ constructor(r, s, recovery) {
+ super(r, s);
+ if (!Number.isInteger(recovery)) {
+ throw new Error("The recovery parameter must be an integer.");
+ }
+ if (recovery < 0 || recovery > 4) {
+ throw new Error("The recovery parameter must be one of 0, 1, 2, 3.");
+ }
+ this.recovery = recovery;
+ }
+ /**
+ * A simple custom encoding that encodes the extended signature as
+ * r (32 bytes) | s (32 bytes) | recovery param (1 byte)
+ * where | denotes concatenation of bonary data.
+ */
+ toFixedLength() {
+ return new Uint8Array([...this.r(32), ...this.s(32), this.recovery]);
+ }
+}
+exports.ExtendedSecp256k1Signature = ExtendedSecp256k1Signature;
+//# sourceMappingURL=secp256k1signature.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js.map
new file mode 100644
index 00000000..fbd7aa0a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/secp256k1signature.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"secp256k1signature.js","sourceRoot":"","sources":["../src/secp256k1signature.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.d.ts
new file mode 100644
index 00000000..dbe5bd84
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.d.ts
@@ -0,0 +1,19 @@
+import { HashFunction } from "./hash";
+export declare class Sha256 implements HashFunction {
+ readonly blockSize: number;
+ private readonly impl;
+ constructor(firstData?: Uint8Array);
+ update(data: Uint8Array): Sha256;
+ digest(): Uint8Array;
+}
+/** Convenience function equivalent to `new Sha256(data).digest()` */
+export declare function sha256(data: Uint8Array): Uint8Array;
+export declare class Sha512 implements HashFunction {
+ readonly blockSize: number;
+ private readonly impl;
+ constructor(firstData?: Uint8Array);
+ update(data: Uint8Array): Sha512;
+ digest(): Uint8Array;
+}
+/** Convenience function equivalent to `new Sha512(data).digest()` */
+export declare function sha512(data: Uint8Array): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js
new file mode 100644
index 00000000..0eb21cef
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.sha512 = exports.Sha512 = exports.sha256 = exports.Sha256 = void 0;
+const sha256_1 = require("@noble/hashes/sha256");
+const sha512_1 = require("@noble/hashes/sha512");
+const utils_1 = require("./utils");
+class Sha256 {
+ constructor(firstData) {
+ this.blockSize = 512 / 8;
+ this.impl = sha256_1.sha256.create();
+ if (firstData) {
+ this.update(firstData);
+ }
+ }
+ update(data) {
+ this.impl.update((0, utils_1.toRealUint8Array)(data));
+ return this;
+ }
+ digest() {
+ return this.impl.digest();
+ }
+}
+exports.Sha256 = Sha256;
+/** Convenience function equivalent to `new Sha256(data).digest()` */
+function sha256(data) {
+ return new Sha256(data).digest();
+}
+exports.sha256 = sha256;
+class Sha512 {
+ constructor(firstData) {
+ this.blockSize = 1024 / 8;
+ this.impl = sha512_1.sha512.create();
+ if (firstData) {
+ this.update(firstData);
+ }
+ }
+ update(data) {
+ this.impl.update((0, utils_1.toRealUint8Array)(data));
+ return this;
+ }
+ digest() {
+ return this.impl.digest();
+ }
+}
+exports.Sha512 = Sha512;
+/** Convenience function equivalent to `new Sha512(data).digest()` */
+function sha512(data) {
+ return new Sha512(data).digest();
+}
+exports.sha512 = sha512;
+//# sourceMappingURL=sha.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js.map
new file mode 100644
index 00000000..7bfcd3aa
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/sha.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sha.js","sourceRoot":"","sources":["../src/sha.ts"],"names":[],"mappings":";;;AAAA,iDAA6D;AAC7D,iDAA6D;AAG7D,mCAA2C;AAE3C,MAAa,MAAM;IAKjB,YAAmB,SAAsB;QAJzB,cAAS,GAAG,GAAG,GAAG,CAAC,CAAC;QAEnB,SAAI,GAAG,eAAW,CAAC,MAAM,EAAE,CAAC;QAG3C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;IACH,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAnBD,wBAmBC;AAED,qEAAqE;AACrE,SAAgB,MAAM,CAAC,IAAgB;IACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAFD,wBAEC;AAED,MAAa,MAAM;IAKjB,YAAmB,SAAsB;QAJzB,cAAS,GAAG,IAAI,GAAG,CAAC,CAAC;QAEpB,SAAI,GAAG,eAAW,CAAC,MAAM,EAAE,CAAC;QAG3C,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACxB;IACH,CAAC;IAEM,MAAM,CAAC,IAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;CACF;AAnBD,wBAmBC;AAED,qEAAqE;AACrE,SAAgB,MAAM,CAAC,IAAgB;IACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAFD,wBAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.d.ts
new file mode 100644
index 00000000..11687600
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.d.ts
@@ -0,0 +1,67 @@
+import { Uint32 } from "@cosmjs/math";
+export interface Slip10Result {
+ readonly chainCode: Uint8Array;
+ readonly privkey: Uint8Array;
+}
+/**
+ * Raw values must match the curve string in SLIP-0010 master key generation
+ *
+ * @see https://github.com/satoshilabs/slips/blob/master/slip-0010.md#master-key-generation
+ */
+export declare enum Slip10Curve {
+ Secp256k1 = "Bitcoin seed",
+ Ed25519 = "ed25519 seed"
+}
+/**
+ * Reverse mapping of Slip10Curve
+ */
+export declare function slip10CurveFromString(curveString: string): Slip10Curve;
+export declare class Slip10RawIndex extends Uint32 {
+ static hardened(hardenedIndex: number): Slip10RawIndex;
+ static normal(normalIndex: number): Slip10RawIndex;
+ isHardened(): boolean;
+}
+/**
+ * An array of raw SLIP10 indices.
+ *
+ * This can be constructed via string parsing:
+ *
+ * ```ts
+ * import { stringToPath } from "@cosmjs/crypto";
+ *
+ * const path = stringToPath("m/0'/1/2'/2/1000000000");
+ * ```
+ *
+ * or manually:
+ *
+ * ```ts
+ * import { HdPath, Slip10RawIndex } from "@cosmjs/crypto";
+ *
+ * // m/0'/1/2'/2/1000000000
+ * const path: HdPath = [
+ * Slip10RawIndex.hardened(0),
+ * Slip10RawIndex.normal(1),
+ * Slip10RawIndex.hardened(2),
+ * Slip10RawIndex.normal(2),
+ * Slip10RawIndex.normal(1000000000),
+ * ];
+ * ```
+ */
+export type HdPath = readonly Slip10RawIndex[];
+export declare class Slip10 {
+ static derivePath(curve: Slip10Curve, seed: Uint8Array, path: HdPath): Slip10Result;
+ private static master;
+ private static child;
+ /**
+ * Implementation of ser_P(point(k_par)) from BIP-0032
+ *
+ * @see https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
+ */
+ private static serializedPoint;
+ private static childImpl;
+ private static isZero;
+ private static isGteN;
+ private static n;
+}
+export declare function pathToString(path: HdPath): string;
+export declare function stringToPath(input: string): HdPath;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js
new file mode 100644
index 00000000..713cfdba
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js
@@ -0,0 +1,186 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.stringToPath = exports.pathToString = exports.Slip10 = exports.Slip10RawIndex = exports.slip10CurveFromString = exports.Slip10Curve = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+const math_1 = require("@cosmjs/math");
+const bn_js_1 = __importDefault(require("bn.js"));
+const elliptic_1 = __importDefault(require("elliptic"));
+const hmac_1 = require("./hmac");
+const sha_1 = require("./sha");
+/**
+ * Raw values must match the curve string in SLIP-0010 master key generation
+ *
+ * @see https://github.com/satoshilabs/slips/blob/master/slip-0010.md#master-key-generation
+ */
+var Slip10Curve;
+(function (Slip10Curve) {
+ Slip10Curve["Secp256k1"] = "Bitcoin seed";
+ Slip10Curve["Ed25519"] = "ed25519 seed";
+})(Slip10Curve = exports.Slip10Curve || (exports.Slip10Curve = {}));
+/**
+ * Reverse mapping of Slip10Curve
+ */
+function slip10CurveFromString(curveString) {
+ switch (curveString) {
+ case Slip10Curve.Ed25519:
+ return Slip10Curve.Ed25519;
+ case Slip10Curve.Secp256k1:
+ return Slip10Curve.Secp256k1;
+ default:
+ throw new Error(`Unknown curve string: '${curveString}'`);
+ }
+}
+exports.slip10CurveFromString = slip10CurveFromString;
+class Slip10RawIndex extends math_1.Uint32 {
+ static hardened(hardenedIndex) {
+ return new Slip10RawIndex(hardenedIndex + 2 ** 31);
+ }
+ static normal(normalIndex) {
+ return new Slip10RawIndex(normalIndex);
+ }
+ isHardened() {
+ return this.data >= 2 ** 31;
+ }
+}
+exports.Slip10RawIndex = Slip10RawIndex;
+const secp256k1 = new elliptic_1.default.ec("secp256k1");
+// Universal private key derivation accoring to
+// https://github.com/satoshilabs/slips/blob/master/slip-0010.md
+class Slip10 {
+ static derivePath(curve, seed, path) {
+ let result = this.master(curve, seed);
+ for (const rawIndex of path) {
+ result = this.child(curve, result.privkey, result.chainCode, rawIndex);
+ }
+ return result;
+ }
+ static master(curve, seed) {
+ const i = new hmac_1.Hmac(sha_1.Sha512, (0, encoding_1.toAscii)(curve)).update(seed).digest();
+ const il = i.slice(0, 32);
+ const ir = i.slice(32, 64);
+ if (curve !== Slip10Curve.Ed25519 && (this.isZero(il) || this.isGteN(curve, il))) {
+ return this.master(curve, i);
+ }
+ return {
+ chainCode: ir,
+ privkey: il,
+ };
+ }
+ static child(curve, parentPrivkey, parentChainCode, rawIndex) {
+ let i;
+ if (rawIndex.isHardened()) {
+ const payload = new Uint8Array([0x00, ...parentPrivkey, ...rawIndex.toBytesBigEndian()]);
+ i = new hmac_1.Hmac(sha_1.Sha512, parentChainCode).update(payload).digest();
+ }
+ else {
+ if (curve === Slip10Curve.Ed25519) {
+ throw new Error("Normal keys are not allowed with ed25519");
+ }
+ else {
+ // Step 1 of https://github.com/satoshilabs/slips/blob/master/slip-0010.md#private-parent-key--private-child-key
+ // Calculate I = HMAC-SHA512(Key = c_par, Data = ser_P(point(k_par)) || ser_32(i)).
+ // where the functions point() and ser_p() are defined in BIP-0032
+ const data = new Uint8Array([
+ ...Slip10.serializedPoint(curve, new bn_js_1.default(parentPrivkey)),
+ ...rawIndex.toBytesBigEndian(),
+ ]);
+ i = new hmac_1.Hmac(sha_1.Sha512, parentChainCode).update(data).digest();
+ }
+ }
+ return this.childImpl(curve, parentPrivkey, parentChainCode, rawIndex, i);
+ }
+ /**
+ * Implementation of ser_P(point(k_par)) from BIP-0032
+ *
+ * @see https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
+ */
+ static serializedPoint(curve, p) {
+ switch (curve) {
+ case Slip10Curve.Secp256k1:
+ return (0, encoding_1.fromHex)(secp256k1.g.mul(p).encodeCompressed("hex"));
+ default:
+ throw new Error("curve not supported");
+ }
+ }
+ static childImpl(curve, parentPrivkey, parentChainCode, rawIndex, i) {
+ // step 2 (of the Private parent key → private child key algorithm)
+ const il = i.slice(0, 32);
+ const ir = i.slice(32, 64);
+ // step 3
+ const returnChainCode = ir;
+ // step 4
+ if (curve === Slip10Curve.Ed25519) {
+ return {
+ chainCode: returnChainCode,
+ privkey: il,
+ };
+ }
+ // step 5
+ const n = this.n(curve);
+ const returnChildKeyAsNumber = new bn_js_1.default(il).add(new bn_js_1.default(parentPrivkey)).mod(n);
+ const returnChildKey = Uint8Array.from(returnChildKeyAsNumber.toArray("be", 32));
+ // step 6
+ if (this.isGteN(curve, il) || this.isZero(returnChildKey)) {
+ const newI = new hmac_1.Hmac(sha_1.Sha512, parentChainCode)
+ .update(new Uint8Array([0x01, ...ir, ...rawIndex.toBytesBigEndian()]))
+ .digest();
+ return this.childImpl(curve, parentPrivkey, parentChainCode, rawIndex, newI);
+ }
+ // step 7
+ return {
+ chainCode: returnChainCode,
+ privkey: returnChildKey,
+ };
+ }
+ static isZero(privkey) {
+ return privkey.every((byte) => byte === 0);
+ }
+ static isGteN(curve, privkey) {
+ const keyAsNumber = new bn_js_1.default(privkey);
+ return keyAsNumber.gte(this.n(curve));
+ }
+ static n(curve) {
+ switch (curve) {
+ case Slip10Curve.Secp256k1:
+ return new bn_js_1.default("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", 16);
+ default:
+ throw new Error("curve not supported");
+ }
+ }
+}
+exports.Slip10 = Slip10;
+function pathToString(path) {
+ return path.reduce((current, component) => {
+ const componentString = component.isHardened()
+ ? `${component.toNumber() - 2 ** 31}'`
+ : component.toString();
+ return current + "/" + componentString;
+ }, "m");
+}
+exports.pathToString = pathToString;
+function stringToPath(input) {
+ if (!input.startsWith("m"))
+ throw new Error("Path string must start with 'm'");
+ let rest = input.slice(1);
+ const out = new Array();
+ while (rest) {
+ const match = rest.match(/^\/([0-9]+)('?)/);
+ if (!match)
+ throw new Error("Syntax error while reading path component");
+ const [fullMatch, numberString, apostrophe] = match;
+ const value = math_1.Uint53.fromString(numberString).toNumber();
+ if (value >= 2 ** 31)
+ throw new Error("Component value too high. Must not exceed 2**31-1.");
+ if (apostrophe)
+ out.push(Slip10RawIndex.hardened(value));
+ else
+ out.push(Slip10RawIndex.normal(value));
+ rest = rest.slice(fullMatch.length);
+ }
+ return out;
+}
+exports.stringToPath = stringToPath;
+//# sourceMappingURL=slip10.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js.map
new file mode 100644
index 00000000..11c29d7b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/slip10.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"slip10.js","sourceRoot":"","sources":["../src/slip10.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.d.ts
new file mode 100644
index 00000000..93de3b0a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.d.ts
@@ -0,0 +1 @@
+export declare function toRealUint8Array(data: ArrayLike): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js
new file mode 100644
index 00000000..2afcbabc
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toRealUint8Array = void 0;
+// See https://github.com/paulmillr/noble-hashes/issues/25 for why this is needed
+function toRealUint8Array(data) {
+ if (data instanceof Uint8Array)
+ return data;
+ else
+ return Uint8Array.from(data);
+}
+exports.toRealUint8Array = toRealUint8Array;
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js.map
new file mode 100644
index 00000000..153254de
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/build/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,iFAAiF;AACjF,SAAgB,gBAAgB,CAAC,IAAuB;IACtD,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;;QACvC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAHD,4CAGC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/package.json b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/package.json
new file mode 100644
index 00000000..58930008
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto/package.json
@@ -0,0 +1,91 @@
+{
+ "name": "@cosmjs/crypto",
+ "version": "0.31.0",
+ "description": "Cryptography resources for blockchain projects",
+ "contributors": [
+ "IOV SAS ",
+ "Simon Warta"
+ ],
+ "license": "Apache-2.0",
+ "main": "build/index.js",
+ "types": "build/index.d.ts",
+ "files": [
+ "build/",
+ "*.md",
+ "!*.spec.*",
+ "!**/testdata/"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cosmos/cosmjs/tree/main/packages/crypto"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "docs": "typedoc --options typedoc.js",
+ "lint": "eslint --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "lint-fix": "eslint --fix --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "format": "prettier --write --loglevel warn \"./src/**/*.ts\"",
+ "format-text": "prettier --write \"./*.md\"",
+ "test-node": "yarn node jasmine-testrunner.js",
+ "test-edge": "yarn pack-web && karma start --single-run --browsers Edge",
+ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",
+ "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless",
+ "test-safari": "yarn pack-web && karma start --single-run --browsers Safari",
+ "test": "yarn build-or-skip && yarn test-node",
+ "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet",
+ "build": "rm -rf ./build && tsc",
+ "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build",
+ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js"
+ },
+ "dependencies": {
+ "@cosmjs/encoding": "^0.31.0",
+ "@cosmjs/math": "^0.31.0",
+ "@cosmjs/utils": "^0.31.0",
+ "@noble/hashes": "^1",
+ "bn.js": "^5.2.0",
+ "elliptic": "^6.5.4",
+ "libsodium-wrappers-sumo": "^0.7.11"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.1",
+ "@types/bn.js": "^5",
+ "@types/elliptic": "^6.4.14",
+ "@types/eslint-plugin-prettier": "^3",
+ "@types/jasmine": "^4",
+ "@types/karma-firefox-launcher": "^2",
+ "@types/karma-jasmine": "^4",
+ "@types/karma-jasmine-html-reporter": "^1",
+ "@types/libsodium-wrappers-sumo": "^0.7.5",
+ "@types/node": "^18",
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
+ "@typescript-eslint/parser": "^5.54.0",
+ "buffer": "^6.0.3",
+ "eslint": "^7.5",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-import-resolver-node": "^0.3.4",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-simple-import-sort": "^7.0.0",
+ "esm": "^3.2.25",
+ "glob": "^7.1.6",
+ "jasmine": "^4",
+ "jasmine-spec-reporter": "^6",
+ "karma": "^6.3.14",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-firefox-launcher": "^2.1.0",
+ "karma-jasmine": "^5",
+ "karma-jasmine-html-reporter": "^1.5.4",
+ "nyc": "^15.1.0",
+ "prettier": "^2.8.1",
+ "ses": "^0.11.0",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^8",
+ "typedoc": "^0.23",
+ "typescript": "~4.9",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.6.0"
+ }
+}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/README.md b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/README.md
new file mode 100644
index 00000000..24a42e7f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/README.md
@@ -0,0 +1,23 @@
+# @cosmjs/encoding
+
+[](https://www.npmjs.com/package/@cosmjs/encoding)
+
+This package is an extension to the JavaScript standard library that is not
+bound to blockchain products. It provides basic hex/base64/ascii encoding to
+Uint8Array that doesn't rely on Buffer and also provides better error messages
+on invalid input.
+
+## Convert between bech32 and hex addresses
+
+```
+>> toBech32("tiov", fromHex("1234ABCD0000AA0000FFFF0000AA00001234ABCD"))
+'tiov1zg62hngqqz4qqq8lluqqp2sqqqfrf27dzrrmea'
+>> toHex(fromBech32("tiov1zg62hngqqz4qqq8lluqqp2sqqqfrf27dzrrmea").data)
+'1234abcd0000aa0000ffff0000aa00001234abcd'
+```
+
+## License
+
+This package is part of the cosmjs repository, licensed under the Apache License
+2.0 (see [NOTICE](https://github.com/cosmos/cosmjs/blob/main/NOTICE) and
+[LICENSE](https://github.com/cosmos/cosmjs/blob/main/LICENSE)).
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.d.ts
new file mode 100644
index 00000000..42d32698
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.d.ts
@@ -0,0 +1,2 @@
+export declare function toAscii(input: string): Uint8Array;
+export declare function fromAscii(data: Uint8Array): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js
new file mode 100644
index 00000000..43122441
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js
@@ -0,0 +1,33 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromAscii = exports.toAscii = void 0;
+function toAscii(input) {
+ const toNums = (str) => str.split("").map((x) => {
+ const charCode = x.charCodeAt(0);
+ // 0x00–0x1F control characters
+ // 0x20–0x7E printable characters
+ // 0x7F delete character
+ // 0x80–0xFF out of 7 bit ascii range
+ if (charCode < 0x20 || charCode > 0x7e) {
+ throw new Error("Cannot encode character that is out of printable ASCII range: " + charCode);
+ }
+ return charCode;
+ });
+ return Uint8Array.from(toNums(input));
+}
+exports.toAscii = toAscii;
+function fromAscii(data) {
+ const fromNums = (listOfNumbers) => listOfNumbers.map((x) => {
+ // 0x00–0x1F control characters
+ // 0x20–0x7E printable characters
+ // 0x7F delete character
+ // 0x80–0xFF out of 7 bit ascii range
+ if (x < 0x20 || x > 0x7e) {
+ throw new Error("Cannot decode character that is out of printable ASCII range: " + x);
+ }
+ return String.fromCharCode(x);
+ });
+ return fromNums(Array.from(data)).join("");
+}
+exports.fromAscii = fromAscii;
+//# sourceMappingURL=ascii.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js.map
new file mode 100644
index 00000000..34d0ca05
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/ascii.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ascii.js","sourceRoot":"","sources":["../src/ascii.ts"],"names":[],"mappings":";;;AAAA,SAAgB,OAAO,CAAC,KAAa;IACnC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAqB,EAAE,CAChD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,+BAA+B;QAC/B,iCAAiC;QACjC,wBAAwB;QACxB,qCAAqC;QACrC,IAAI,QAAQ,GAAG,IAAI,IAAI,QAAQ,GAAG,IAAI,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,gEAAgE,GAAG,QAAQ,CAAC,CAAC;SAC9F;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IACL,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAdD,0BAcC;AAED,SAAgB,SAAS,CAAC,IAAgB;IACxC,MAAM,QAAQ,GAAG,CAAC,aAAgC,EAAqB,EAAE,CACvE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAS,EAAU,EAAE;QACtC,+BAA+B;QAC/B,iCAAiC;QACjC,wBAAwB;QACxB,qCAAqC;QACrC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,gEAAgE,GAAG,CAAC,CAAC,CAAC;SACvF;QACD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC;AAdD,8BAcC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.d.ts
new file mode 100644
index 00000000..3eb3915c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.d.ts
@@ -0,0 +1,2 @@
+export declare function toBase64(data: Uint8Array): string;
+export declare function fromBase64(base64String: string): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js
new file mode 100644
index 00000000..72eddd59
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js
@@ -0,0 +1,39 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromBase64 = exports.toBase64 = void 0;
+const base64js = __importStar(require("base64-js"));
+function toBase64(data) {
+ return base64js.fromByteArray(data);
+}
+exports.toBase64 = toBase64;
+function fromBase64(base64String) {
+ if (!base64String.match(/^[a-zA-Z0-9+/]*={0,2}$/)) {
+ throw new Error("Invalid base64 string format");
+ }
+ return base64js.toByteArray(base64String);
+}
+exports.fromBase64 = fromBase64;
+//# sourceMappingURL=base64.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js.map
new file mode 100644
index 00000000..4692c803
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/base64.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AAEtC,SAAgB,QAAQ,CAAC,IAAgB;IACvC,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAC,YAAoB;IAC7C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC;AALD,gCAKC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.d.ts
new file mode 100644
index 00000000..cf4222d7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.d.ts
@@ -0,0 +1,12 @@
+export declare function toBech32(prefix: string, data: Uint8Array, limit?: number): string;
+export declare function fromBech32(address: string, limit?: number): {
+ readonly prefix: string;
+ readonly data: Uint8Array;
+};
+/**
+ * Takes a bech32 address and returns a normalized (i.e. lower case) representation of it.
+ *
+ * The input is validated along the way, which makes this significantly safer than
+ * using `address.toLowerCase()`.
+ */
+export declare function normalizeBech32(address: string): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js
new file mode 100644
index 00000000..f463cdcb
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js
@@ -0,0 +1,52 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.normalizeBech32 = exports.fromBech32 = exports.toBech32 = void 0;
+const bech32 = __importStar(require("bech32"));
+function toBech32(prefix, data, limit) {
+ const address = bech32.encode(prefix, bech32.toWords(data), limit);
+ return address;
+}
+exports.toBech32 = toBech32;
+function fromBech32(address, limit = Infinity) {
+ const decodedAddress = bech32.decode(address, limit);
+ return {
+ prefix: decodedAddress.prefix,
+ data: new Uint8Array(bech32.fromWords(decodedAddress.words)),
+ };
+}
+exports.fromBech32 = fromBech32;
+/**
+ * Takes a bech32 address and returns a normalized (i.e. lower case) representation of it.
+ *
+ * The input is validated along the way, which makes this significantly safer than
+ * using `address.toLowerCase()`.
+ */
+function normalizeBech32(address) {
+ const { prefix, data } = fromBech32(address);
+ return toBech32(prefix, data);
+}
+exports.normalizeBech32 = normalizeBech32;
+//# sourceMappingURL=bech32.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js.map
new file mode 100644
index 00000000..d2d53250
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/bech32.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"bech32.js","sourceRoot":"","sources":["../src/bech32.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,SAAgB,QAAQ,CAAC,MAAc,EAAE,IAAgB,EAAE,KAAc;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC;AACjB,CAAC;AAHD,4BAGC;AAED,SAAgB,UAAU,CACxB,OAAe,EACf,KAAK,GAAG,QAAQ;IAEhB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC7D,CAAC;AACJ,CAAC;AATD,gCASC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAHD,0CAGC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.d.ts
new file mode 100644
index 00000000..a337851f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.d.ts
@@ -0,0 +1,2 @@
+export declare function toHex(data: Uint8Array): string;
+export declare function fromHex(hexstring: string): Uint8Array;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js
new file mode 100644
index 00000000..8513b590
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromHex = exports.toHex = void 0;
+function toHex(data) {
+ let out = "";
+ for (const byte of data) {
+ out += ("0" + byte.toString(16)).slice(-2);
+ }
+ return out;
+}
+exports.toHex = toHex;
+function fromHex(hexstring) {
+ if (hexstring.length % 2 !== 0) {
+ throw new Error("hex string length must be a multiple of 2");
+ }
+ const out = new Uint8Array(hexstring.length / 2);
+ for (let i = 0; i < out.length; i++) {
+ const j = 2 * i;
+ const hexByteAsString = hexstring.slice(j, j + 2);
+ if (!hexByteAsString.match(/[0-9a-f]{2}/i)) {
+ throw new Error("hex string contains invalid characters");
+ }
+ out[i] = parseInt(hexByteAsString, 16);
+ }
+ return out;
+}
+exports.fromHex = fromHex;
+//# sourceMappingURL=hex.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js.map
new file mode 100644
index 00000000..1c12ece9
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/hex.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"hex.js","sourceRoot":"","sources":["../src/hex.ts"],"names":[],"mappings":";;;AAAA,SAAgB,KAAK,CAAC,IAAgB;IACpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAND,sBAMC;AAED,SAAgB,OAAO,CAAC,SAAiB;IACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;KACxC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAfD,0BAeC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.d.ts
new file mode 100644
index 00000000..a2dc4771
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.d.ts
@@ -0,0 +1,6 @@
+export { fromAscii, toAscii } from "./ascii";
+export { fromBase64, toBase64 } from "./base64";
+export { fromBech32, normalizeBech32, toBech32 } from "./bech32";
+export { fromHex, toHex } from "./hex";
+export { fromRfc3339, toRfc3339 } from "./rfc3339";
+export { fromUtf8, toUtf8 } from "./utf8";
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js
new file mode 100644
index 00000000..0506f526
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toUtf8 = exports.fromUtf8 = exports.toRfc3339 = exports.fromRfc3339 = exports.toHex = exports.fromHex = exports.toBech32 = exports.normalizeBech32 = exports.fromBech32 = exports.toBase64 = exports.fromBase64 = exports.toAscii = exports.fromAscii = void 0;
+var ascii_1 = require("./ascii");
+Object.defineProperty(exports, "fromAscii", { enumerable: true, get: function () { return ascii_1.fromAscii; } });
+Object.defineProperty(exports, "toAscii", { enumerable: true, get: function () { return ascii_1.toAscii; } });
+var base64_1 = require("./base64");
+Object.defineProperty(exports, "fromBase64", { enumerable: true, get: function () { return base64_1.fromBase64; } });
+Object.defineProperty(exports, "toBase64", { enumerable: true, get: function () { return base64_1.toBase64; } });
+var bech32_1 = require("./bech32");
+Object.defineProperty(exports, "fromBech32", { enumerable: true, get: function () { return bech32_1.fromBech32; } });
+Object.defineProperty(exports, "normalizeBech32", { enumerable: true, get: function () { return bech32_1.normalizeBech32; } });
+Object.defineProperty(exports, "toBech32", { enumerable: true, get: function () { return bech32_1.toBech32; } });
+var hex_1 = require("./hex");
+Object.defineProperty(exports, "fromHex", { enumerable: true, get: function () { return hex_1.fromHex; } });
+Object.defineProperty(exports, "toHex", { enumerable: true, get: function () { return hex_1.toHex; } });
+var rfc3339_1 = require("./rfc3339");
+Object.defineProperty(exports, "fromRfc3339", { enumerable: true, get: function () { return rfc3339_1.fromRfc3339; } });
+Object.defineProperty(exports, "toRfc3339", { enumerable: true, get: function () { return rfc3339_1.toRfc3339; } });
+var utf8_1 = require("./utf8");
+Object.defineProperty(exports, "fromUtf8", { enumerable: true, get: function () { return utf8_1.fromUtf8; } });
+Object.defineProperty(exports, "toUtf8", { enumerable: true, get: function () { return utf8_1.toUtf8; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js.map
new file mode 100644
index 00000000..8ffe3ef1
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAApC,kGAAA,SAAS,OAAA;AAAE,gGAAA,OAAO,OAAA;AAC3B,mCAAgD;AAAvC,oGAAA,UAAU,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAC7B,mCAAiE;AAAxD,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAC9C,6BAAuC;AAA9B,8FAAA,OAAO,OAAA;AAAE,4FAAA,KAAK,OAAA;AACvB,qCAAmD;AAA1C,sGAAA,WAAW,OAAA;AAAE,oGAAA,SAAS,OAAA;AAC/B,+BAA0C;AAAjC,gGAAA,QAAQ,OAAA;AAAE,8FAAA,MAAM,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.d.ts
new file mode 100644
index 00000000..759db985
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.d.ts
@@ -0,0 +1,3 @@
+import { ReadonlyDate } from "readonly-date";
+export declare function fromRfc3339(str: string): Date;
+export declare function toRfc3339(date: Date | ReadonlyDate): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js
new file mode 100644
index 00000000..58cbbfd1
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toRfc3339 = exports.fromRfc3339 = void 0;
+const rfc3339Matcher = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})(\.\d{1,9})?((?:[+-]\d{2}:\d{2})|Z)$/;
+function padded(integer, length = 2) {
+ return integer.toString().padStart(length, "0");
+}
+function fromRfc3339(str) {
+ const matches = rfc3339Matcher.exec(str);
+ if (!matches) {
+ throw new Error("Date string is not in RFC3339 format");
+ }
+ const year = +matches[1];
+ const month = +matches[2];
+ const day = +matches[3];
+ const hour = +matches[4];
+ const minute = +matches[5];
+ const second = +matches[6];
+ // fractional seconds match either undefined or a string like ".1", ".123456789"
+ const milliSeconds = matches[7] ? Math.floor(+matches[7] * 1000) : 0;
+ let tzOffsetSign;
+ let tzOffsetHours;
+ let tzOffsetMinutes;
+ // if timezone is undefined, it must be Z or nothing (otherwise the group would have captured).
+ if (matches[8] === "Z") {
+ tzOffsetSign = 1;
+ tzOffsetHours = 0;
+ tzOffsetMinutes = 0;
+ }
+ else {
+ tzOffsetSign = matches[8].substring(0, 1) === "-" ? -1 : 1;
+ tzOffsetHours = +matches[8].substring(1, 3);
+ tzOffsetMinutes = +matches[8].substring(4, 6);
+ }
+ const tzOffset = tzOffsetSign * (tzOffsetHours * 60 + tzOffsetMinutes) * 60; // seconds
+ const timestamp = Date.UTC(year, month - 1, day, hour, minute, second, milliSeconds) - tzOffset * 1000;
+ return new Date(timestamp);
+}
+exports.fromRfc3339 = fromRfc3339;
+function toRfc3339(date) {
+ const year = date.getUTCFullYear();
+ const month = padded(date.getUTCMonth() + 1);
+ const day = padded(date.getUTCDate());
+ const hour = padded(date.getUTCHours());
+ const minute = padded(date.getUTCMinutes());
+ const second = padded(date.getUTCSeconds());
+ const ms = padded(date.getUTCMilliseconds(), 3);
+ return `${year}-${month}-${day}T${hour}:${minute}:${second}.${ms}Z`;
+}
+exports.toRfc3339 = toRfc3339;
+//# sourceMappingURL=rfc3339.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js.map
new file mode 100644
index 00000000..595261d6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/rfc3339.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"rfc3339.js","sourceRoot":"","sources":["../src/rfc3339.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.d.ts
new file mode 100644
index 00000000..0911143a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.d.ts
@@ -0,0 +1,8 @@
+export declare function toUtf8(str: string): Uint8Array;
+/**
+ * Takes UTF-8 data and decodes it to a string.
+ *
+ * In lossy mode, the replacement character � is used to substitude invalid
+ * encodings. By default lossy mode is off and invalid data will lead to exceptions.
+ */
+export declare function fromUtf8(data: Uint8Array, lossy?: boolean): string;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js
new file mode 100644
index 00000000..39938f26
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromUtf8 = exports.toUtf8 = void 0;
+function toUtf8(str) {
+ return new TextEncoder().encode(str);
+}
+exports.toUtf8 = toUtf8;
+/**
+ * Takes UTF-8 data and decodes it to a string.
+ *
+ * In lossy mode, the replacement character � is used to substitude invalid
+ * encodings. By default lossy mode is off and invalid data will lead to exceptions.
+ */
+function fromUtf8(data, lossy = false) {
+ const fatal = !lossy;
+ return new TextDecoder("utf-8", { fatal }).decode(data);
+}
+exports.fromUtf8 = fromUtf8;
+//# sourceMappingURL=utf8.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js.map
new file mode 100644
index 00000000..dfa3c7c9
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/build/utf8.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../src/utf8.ts"],"names":[],"mappings":";;;AAUA,SAAgB,MAAM,CAAC,GAAW;IAChC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAFD,wBAEC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAgB,EAAE,KAAK,GAAG,KAAK;IACtD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC;IACrB,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAHD,4BAGC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/package.json b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/package.json
new file mode 100644
index 00000000..47ae1770
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding/package.json
@@ -0,0 +1,83 @@
+{
+ "name": "@cosmjs/encoding",
+ "version": "0.31.0",
+ "description": "Encoding helpers for blockchain projects",
+ "contributors": [
+ "IOV SAS "
+ ],
+ "license": "Apache-2.0",
+ "main": "build/index.js",
+ "types": "build/index.d.ts",
+ "files": [
+ "build/",
+ "*.md",
+ "!*.spec.*",
+ "!**/testdata/"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cosmos/cosmjs/tree/main/packages/encoding"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "docs": "typedoc --options typedoc.js",
+ "lint": "eslint --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "lint-fix": "eslint --fix --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "format": "prettier --write --loglevel warn \"./src/**/*.ts\"",
+ "format-text": "prettier --write \"./*.md\"",
+ "test-node": "yarn node jasmine-testrunner.js",
+ "test-edge": "yarn pack-web && karma start --single-run --browsers Edge",
+ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",
+ "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless",
+ "test-safari": "yarn pack-web && karma start --single-run --browsers Safari",
+ "test": "yarn build-or-skip && yarn test-node",
+ "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet",
+ "build": "rm -rf ./build && tsc",
+ "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build",
+ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js"
+ },
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "bech32": "^1.1.4",
+ "readonly-date": "^1.0.0"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.1",
+ "@types/base64-js": "^1.2.5",
+ "@types/eslint-plugin-prettier": "^3",
+ "@types/jasmine": "^4",
+ "@types/karma-firefox-launcher": "^2",
+ "@types/karma-jasmine": "^4",
+ "@types/karma-jasmine-html-reporter": "^1",
+ "@types/node": "^18",
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
+ "@typescript-eslint/parser": "^5.54.0",
+ "eslint": "^7.5",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-import-resolver-node": "^0.3.4",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-simple-import-sort": "^7.0.0",
+ "esm": "^3.2.25",
+ "glob": "^7.1.6",
+ "jasmine": "^4",
+ "jasmine-spec-reporter": "^6",
+ "karma": "^6.3.14",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-firefox-launcher": "^2.1.0",
+ "karma-jasmine": "^5",
+ "karma-jasmine-html-reporter": "^1.5.4",
+ "nyc": "^15.1.0",
+ "prettier": "^2.8.1",
+ "ses": "^0.11.0",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^8",
+ "typedoc": "^0.23",
+ "typescript": "~4.9",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.6.0"
+ }
+}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/README.md b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/README.md
new file mode 100644
index 00000000..97776b73
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/README.md
@@ -0,0 +1,9 @@
+# @cosmjs/math
+
+[](https://www.npmjs.com/package/@cosmjs/math)
+
+## License
+
+This package is part of the cosmjs repository, licensed under the Apache License
+2.0 (see [NOTICE](https://github.com/cosmos/cosmjs/blob/main/NOTICE) and
+[LICENSE](https://github.com/cosmos/cosmjs/blob/main/LICENSE)).
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.d.ts
new file mode 100644
index 00000000..41c52287
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.d.ts
@@ -0,0 +1,66 @@
+import { Uint32, Uint53, Uint64 } from "./integers";
+/**
+ * A type for arbitrary precision, non-negative decimals.
+ *
+ * Instances of this class are immutable.
+ */
+export declare class Decimal {
+ static fromUserInput(input: string, fractionalDigits: number): Decimal;
+ static fromAtomics(atomics: string, fractionalDigits: number): Decimal;
+ /**
+ * Creates a Decimal with value 0.0 and the given number of fractial digits.
+ *
+ * Fractional digits are not relevant for the value but needed to be able
+ * to perform arithmetic operations with other decimals.
+ */
+ static zero(fractionalDigits: number): Decimal;
+ /**
+ * Creates a Decimal with value 1.0 and the given number of fractial digits.
+ *
+ * Fractional digits are not relevant for the value but needed to be able
+ * to perform arithmetic operations with other decimals.
+ */
+ static one(fractionalDigits: number): Decimal;
+ private static verifyFractionalDigits;
+ static compare(a: Decimal, b: Decimal): number;
+ get atomics(): string;
+ get fractionalDigits(): number;
+ private readonly data;
+ private constructor();
+ /** Creates a new instance with the same value */
+ private clone;
+ /** Returns the greatest decimal <= this which has no fractional part (rounding down) */
+ floor(): Decimal;
+ /** Returns the smallest decimal >= this which has no fractional part (rounding up) */
+ ceil(): Decimal;
+ toString(): string;
+ /**
+ * Returns an approximation as a float type. Only use this if no
+ * exact calculation is required.
+ */
+ toFloatApproximation(): number;
+ /**
+ * a.plus(b) returns a+b.
+ *
+ * Both values need to have the same fractional digits.
+ */
+ plus(b: Decimal): Decimal;
+ /**
+ * a.minus(b) returns a-b.
+ *
+ * Both values need to have the same fractional digits.
+ * The resulting difference needs to be non-negative.
+ */
+ minus(b: Decimal): Decimal;
+ /**
+ * a.multiply(b) returns a*b.
+ *
+ * We only allow multiplication by unsigned integers to avoid rounding errors.
+ */
+ multiply(b: Uint32 | Uint53 | Uint64): Decimal;
+ equals(b: Decimal): boolean;
+ isLessThan(b: Decimal): boolean;
+ isLessThanOrEqual(b: Decimal): boolean;
+ isGreaterThan(b: Decimal): boolean;
+ isGreaterThanOrEqual(b: Decimal): boolean;
+}
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js
new file mode 100644
index 00000000..b69b4ed8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js
@@ -0,0 +1,212 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Decimal = void 0;
+const bn_js_1 = __importDefault(require("bn.js"));
+// Too large values lead to massive memory usage. Limit to something sensible.
+// The largest value we need is 18 (Ether).
+const maxFractionalDigits = 100;
+/**
+ * A type for arbitrary precision, non-negative decimals.
+ *
+ * Instances of this class are immutable.
+ */
+class Decimal {
+ static fromUserInput(input, fractionalDigits) {
+ Decimal.verifyFractionalDigits(fractionalDigits);
+ const badCharacter = input.match(/[^0-9.]/);
+ if (badCharacter) {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ throw new Error(`Invalid character at position ${badCharacter.index + 1}`);
+ }
+ let whole;
+ let fractional;
+ if (input === "") {
+ whole = "0";
+ fractional = "";
+ }
+ else if (input.search(/\./) === -1) {
+ // integer format, no separator
+ whole = input;
+ fractional = "";
+ }
+ else {
+ const parts = input.split(".");
+ switch (parts.length) {
+ case 0:
+ case 1:
+ throw new Error("Fewer than two elements in split result. This must not happen here.");
+ case 2:
+ if (!parts[1])
+ throw new Error("Fractional part missing");
+ whole = parts[0];
+ fractional = parts[1].replace(/0+$/, "");
+ break;
+ default:
+ throw new Error("More than one separator found");
+ }
+ }
+ if (fractional.length > fractionalDigits) {
+ throw new Error("Got more fractional digits than supported");
+ }
+ const quantity = `${whole}${fractional.padEnd(fractionalDigits, "0")}`;
+ return new Decimal(quantity, fractionalDigits);
+ }
+ static fromAtomics(atomics, fractionalDigits) {
+ Decimal.verifyFractionalDigits(fractionalDigits);
+ return new Decimal(atomics, fractionalDigits);
+ }
+ /**
+ * Creates a Decimal with value 0.0 and the given number of fractial digits.
+ *
+ * Fractional digits are not relevant for the value but needed to be able
+ * to perform arithmetic operations with other decimals.
+ */
+ static zero(fractionalDigits) {
+ Decimal.verifyFractionalDigits(fractionalDigits);
+ return new Decimal("0", fractionalDigits);
+ }
+ /**
+ * Creates a Decimal with value 1.0 and the given number of fractial digits.
+ *
+ * Fractional digits are not relevant for the value but needed to be able
+ * to perform arithmetic operations with other decimals.
+ */
+ static one(fractionalDigits) {
+ Decimal.verifyFractionalDigits(fractionalDigits);
+ return new Decimal("1" + "0".repeat(fractionalDigits), fractionalDigits);
+ }
+ static verifyFractionalDigits(fractionalDigits) {
+ if (!Number.isInteger(fractionalDigits))
+ throw new Error("Fractional digits is not an integer");
+ if (fractionalDigits < 0)
+ throw new Error("Fractional digits must not be negative");
+ if (fractionalDigits > maxFractionalDigits) {
+ throw new Error(`Fractional digits must not exceed ${maxFractionalDigits}`);
+ }
+ }
+ static compare(a, b) {
+ if (a.fractionalDigits !== b.fractionalDigits)
+ throw new Error("Fractional digits do not match");
+ return a.data.atomics.cmp(new bn_js_1.default(b.atomics));
+ }
+ get atomics() {
+ return this.data.atomics.toString();
+ }
+ get fractionalDigits() {
+ return this.data.fractionalDigits;
+ }
+ constructor(atomics, fractionalDigits) {
+ if (!atomics.match(/^[0-9]+$/)) {
+ throw new Error("Invalid string format. Only non-negative integers in decimal representation supported.");
+ }
+ this.data = {
+ atomics: new bn_js_1.default(atomics),
+ fractionalDigits: fractionalDigits,
+ };
+ }
+ /** Creates a new instance with the same value */
+ clone() {
+ return new Decimal(this.atomics, this.fractionalDigits);
+ }
+ /** Returns the greatest decimal <= this which has no fractional part (rounding down) */
+ floor() {
+ const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));
+ const whole = this.data.atomics.div(factor);
+ const fractional = this.data.atomics.mod(factor);
+ if (fractional.isZero()) {
+ return this.clone();
+ }
+ else {
+ return Decimal.fromAtomics(whole.mul(factor).toString(), this.fractionalDigits);
+ }
+ }
+ /** Returns the smallest decimal >= this which has no fractional part (rounding up) */
+ ceil() {
+ const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));
+ const whole = this.data.atomics.div(factor);
+ const fractional = this.data.atomics.mod(factor);
+ if (fractional.isZero()) {
+ return this.clone();
+ }
+ else {
+ return Decimal.fromAtomics(whole.addn(1).mul(factor).toString(), this.fractionalDigits);
+ }
+ }
+ toString() {
+ const factor = new bn_js_1.default(10).pow(new bn_js_1.default(this.data.fractionalDigits));
+ const whole = this.data.atomics.div(factor);
+ const fractional = this.data.atomics.mod(factor);
+ if (fractional.isZero()) {
+ return whole.toString();
+ }
+ else {
+ const fullFractionalPart = fractional.toString().padStart(this.data.fractionalDigits, "0");
+ const trimmedFractionalPart = fullFractionalPart.replace(/0+$/, "");
+ return `${whole.toString()}.${trimmedFractionalPart}`;
+ }
+ }
+ /**
+ * Returns an approximation as a float type. Only use this if no
+ * exact calculation is required.
+ */
+ toFloatApproximation() {
+ const out = Number(this.toString());
+ if (Number.isNaN(out))
+ throw new Error("Conversion to number failed");
+ return out;
+ }
+ /**
+ * a.plus(b) returns a+b.
+ *
+ * Both values need to have the same fractional digits.
+ */
+ plus(b) {
+ if (this.fractionalDigits !== b.fractionalDigits)
+ throw new Error("Fractional digits do not match");
+ const sum = this.data.atomics.add(new bn_js_1.default(b.atomics));
+ return new Decimal(sum.toString(), this.fractionalDigits);
+ }
+ /**
+ * a.minus(b) returns a-b.
+ *
+ * Both values need to have the same fractional digits.
+ * The resulting difference needs to be non-negative.
+ */
+ minus(b) {
+ if (this.fractionalDigits !== b.fractionalDigits)
+ throw new Error("Fractional digits do not match");
+ const difference = this.data.atomics.sub(new bn_js_1.default(b.atomics));
+ if (difference.ltn(0))
+ throw new Error("Difference must not be negative");
+ return new Decimal(difference.toString(), this.fractionalDigits);
+ }
+ /**
+ * a.multiply(b) returns a*b.
+ *
+ * We only allow multiplication by unsigned integers to avoid rounding errors.
+ */
+ multiply(b) {
+ const product = this.data.atomics.mul(new bn_js_1.default(b.toString()));
+ return new Decimal(product.toString(), this.fractionalDigits);
+ }
+ equals(b) {
+ return Decimal.compare(this, b) === 0;
+ }
+ isLessThan(b) {
+ return Decimal.compare(this, b) < 0;
+ }
+ isLessThanOrEqual(b) {
+ return Decimal.compare(this, b) <= 0;
+ }
+ isGreaterThan(b) {
+ return Decimal.compare(this, b) > 0;
+ }
+ isGreaterThanOrEqual(b) {
+ return Decimal.compare(this, b) >= 0;
+ }
+}
+exports.Decimal = Decimal;
+//# sourceMappingURL=decimal.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js.map
new file mode 100644
index 00000000..6f3c1272
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/decimal.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../src/decimal.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.d.ts
new file mode 100644
index 00000000..b888136f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.d.ts
@@ -0,0 +1,2 @@
+export { Decimal } from "./decimal";
+export { Int53, Uint32, Uint53, Uint64 } from "./integers";
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js
new file mode 100644
index 00000000..1f812f63
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Uint64 = exports.Uint53 = exports.Uint32 = exports.Int53 = exports.Decimal = void 0;
+var decimal_1 = require("./decimal");
+Object.defineProperty(exports, "Decimal", { enumerable: true, get: function () { return decimal_1.Decimal; } });
+var integers_1 = require("./integers");
+Object.defineProperty(exports, "Int53", { enumerable: true, get: function () { return integers_1.Int53; } });
+Object.defineProperty(exports, "Uint32", { enumerable: true, get: function () { return integers_1.Uint32; } });
+Object.defineProperty(exports, "Uint53", { enumerable: true, get: function () { return integers_1.Uint53; } });
+Object.defineProperty(exports, "Uint64", { enumerable: true, get: function () { return integers_1.Uint64; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js.map
new file mode 100644
index 00000000..5a0926b2
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAA2D;AAAlD,iGAAA,KAAK,OAAA;AAAE,kGAAA,MAAM,OAAA;AAAE,kGAAA,MAAM,OAAA;AAAE,kGAAA,MAAM,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.d.ts
new file mode 100644
index 00000000..6f2e1c09
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.d.ts
@@ -0,0 +1,66 @@
+/** Internal interface to ensure all integer types can be used equally */
+interface Integer {
+ readonly toNumber: () => number;
+ readonly toBigInt: () => bigint;
+ readonly toString: () => string;
+}
+interface WithByteConverters {
+ readonly toBytesBigEndian: () => Uint8Array;
+ readonly toBytesLittleEndian: () => Uint8Array;
+}
+export declare class Uint32 implements Integer, WithByteConverters {
+ /** @deprecated use Uint32.fromBytes */
+ static fromBigEndianBytes(bytes: ArrayLike): Uint32;
+ /**
+ * Creates a Uint32 from a fixed length byte array.
+ *
+ * @param bytes a list of exactly 4 bytes
+ * @param endianess defaults to big endian
+ */
+ static fromBytes(bytes: ArrayLike, endianess?: "be" | "le"): Uint32;
+ static fromString(str: string): Uint32;
+ protected readonly data: number;
+ constructor(input: number);
+ toBytesBigEndian(): Uint8Array;
+ toBytesLittleEndian(): Uint8Array;
+ toNumber(): number;
+ toBigInt(): bigint;
+ toString(): string;
+}
+export declare class Int53 implements Integer {
+ static fromString(str: string): Int53;
+ protected readonly data: number;
+ constructor(input: number);
+ toNumber(): number;
+ toBigInt(): bigint;
+ toString(): string;
+}
+export declare class Uint53 implements Integer {
+ static fromString(str: string): Uint53;
+ protected readonly data: Int53;
+ constructor(input: number);
+ toNumber(): number;
+ toBigInt(): bigint;
+ toString(): string;
+}
+export declare class Uint64 implements Integer, WithByteConverters {
+ /** @deprecated use Uint64.fromBytes */
+ static fromBytesBigEndian(bytes: ArrayLike): Uint64;
+ /**
+ * Creates a Uint64 from a fixed length byte array.
+ *
+ * @param bytes a list of exactly 8 bytes
+ * @param endianess defaults to big endian
+ */
+ static fromBytes(bytes: ArrayLike, endianess?: "be" | "le"): Uint64;
+ static fromString(str: string): Uint64;
+ static fromNumber(input: number): Uint64;
+ private readonly data;
+ private constructor();
+ toBytesBigEndian(): Uint8Array;
+ toBytesLittleEndian(): Uint8Array;
+ toString(): string;
+ toBigInt(): bigint;
+ toNumber(): number;
+}
+export {};
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js
new file mode 100644
index 00000000..282b44b4
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js
@@ -0,0 +1,214 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Uint64 = exports.Uint53 = exports.Int53 = exports.Uint32 = void 0;
+/* eslint-disable no-bitwise */
+const bn_js_1 = __importDefault(require("bn.js"));
+const uint64MaxValue = new bn_js_1.default("18446744073709551615", 10, "be");
+class Uint32 {
+ /** @deprecated use Uint32.fromBytes */
+ static fromBigEndianBytes(bytes) {
+ return Uint32.fromBytes(bytes);
+ }
+ /**
+ * Creates a Uint32 from a fixed length byte array.
+ *
+ * @param bytes a list of exactly 4 bytes
+ * @param endianess defaults to big endian
+ */
+ static fromBytes(bytes, endianess = "be") {
+ if (bytes.length !== 4) {
+ throw new Error("Invalid input length. Expected 4 bytes.");
+ }
+ for (let i = 0; i < bytes.length; ++i) {
+ if (!Number.isInteger(bytes[i]) || bytes[i] > 255 || bytes[i] < 0) {
+ throw new Error("Invalid value in byte. Found: " + bytes[i]);
+ }
+ }
+ const beBytes = endianess === "be" ? bytes : Array.from(bytes).reverse();
+ // Use mulitiplication instead of shifting since bitwise operators are defined
+ // on SIGNED int32 in JavaScript and we don't want to risk surprises
+ return new Uint32(beBytes[0] * 2 ** 24 + beBytes[1] * 2 ** 16 + beBytes[2] * 2 ** 8 + beBytes[3]);
+ }
+ static fromString(str) {
+ if (!str.match(/^[0-9]+$/)) {
+ throw new Error("Invalid string format");
+ }
+ return new Uint32(Number.parseInt(str, 10));
+ }
+ constructor(input) {
+ if (Number.isNaN(input)) {
+ throw new Error("Input is not a number");
+ }
+ if (!Number.isInteger(input)) {
+ throw new Error("Input is not an integer");
+ }
+ if (input < 0 || input > 4294967295) {
+ throw new Error("Input not in uint32 range: " + input.toString());
+ }
+ this.data = input;
+ }
+ toBytesBigEndian() {
+ // Use division instead of shifting since bitwise operators are defined
+ // on SIGNED int32 in JavaScript and we don't want to risk surprises
+ return new Uint8Array([
+ Math.floor(this.data / 2 ** 24) & 0xff,
+ Math.floor(this.data / 2 ** 16) & 0xff,
+ Math.floor(this.data / 2 ** 8) & 0xff,
+ Math.floor(this.data / 2 ** 0) & 0xff,
+ ]);
+ }
+ toBytesLittleEndian() {
+ // Use division instead of shifting since bitwise operators are defined
+ // on SIGNED int32 in JavaScript and we don't want to risk surprises
+ return new Uint8Array([
+ Math.floor(this.data / 2 ** 0) & 0xff,
+ Math.floor(this.data / 2 ** 8) & 0xff,
+ Math.floor(this.data / 2 ** 16) & 0xff,
+ Math.floor(this.data / 2 ** 24) & 0xff,
+ ]);
+ }
+ toNumber() {
+ return this.data;
+ }
+ toBigInt() {
+ return BigInt(this.toNumber());
+ }
+ toString() {
+ return this.data.toString();
+ }
+}
+exports.Uint32 = Uint32;
+class Int53 {
+ static fromString(str) {
+ if (!str.match(/^-?[0-9]+$/)) {
+ throw new Error("Invalid string format");
+ }
+ return new Int53(Number.parseInt(str, 10));
+ }
+ constructor(input) {
+ if (Number.isNaN(input)) {
+ throw new Error("Input is not a number");
+ }
+ if (!Number.isInteger(input)) {
+ throw new Error("Input is not an integer");
+ }
+ if (input < Number.MIN_SAFE_INTEGER || input > Number.MAX_SAFE_INTEGER) {
+ throw new Error("Input not in int53 range: " + input.toString());
+ }
+ this.data = input;
+ }
+ toNumber() {
+ return this.data;
+ }
+ toBigInt() {
+ return BigInt(this.toNumber());
+ }
+ toString() {
+ return this.data.toString();
+ }
+}
+exports.Int53 = Int53;
+class Uint53 {
+ static fromString(str) {
+ const signed = Int53.fromString(str);
+ return new Uint53(signed.toNumber());
+ }
+ constructor(input) {
+ const signed = new Int53(input);
+ if (signed.toNumber() < 0) {
+ throw new Error("Input is negative");
+ }
+ this.data = signed;
+ }
+ toNumber() {
+ return this.data.toNumber();
+ }
+ toBigInt() {
+ return BigInt(this.toNumber());
+ }
+ toString() {
+ return this.data.toString();
+ }
+}
+exports.Uint53 = Uint53;
+class Uint64 {
+ /** @deprecated use Uint64.fromBytes */
+ static fromBytesBigEndian(bytes) {
+ return Uint64.fromBytes(bytes);
+ }
+ /**
+ * Creates a Uint64 from a fixed length byte array.
+ *
+ * @param bytes a list of exactly 8 bytes
+ * @param endianess defaults to big endian
+ */
+ static fromBytes(bytes, endianess = "be") {
+ if (bytes.length !== 8) {
+ throw new Error("Invalid input length. Expected 8 bytes.");
+ }
+ for (let i = 0; i < bytes.length; ++i) {
+ if (!Number.isInteger(bytes[i]) || bytes[i] > 255 || bytes[i] < 0) {
+ throw new Error("Invalid value in byte. Found: " + bytes[i]);
+ }
+ }
+ const beBytes = endianess === "be" ? Array.from(bytes) : Array.from(bytes).reverse();
+ return new Uint64(new bn_js_1.default(beBytes));
+ }
+ static fromString(str) {
+ if (!str.match(/^[0-9]+$/)) {
+ throw new Error("Invalid string format");
+ }
+ return new Uint64(new bn_js_1.default(str, 10, "be"));
+ }
+ static fromNumber(input) {
+ if (Number.isNaN(input)) {
+ throw new Error("Input is not a number");
+ }
+ if (!Number.isInteger(input)) {
+ throw new Error("Input is not an integer");
+ }
+ let bigint;
+ try {
+ bigint = new bn_js_1.default(input);
+ }
+ catch {
+ throw new Error("Input is not a safe integer");
+ }
+ return new Uint64(bigint);
+ }
+ constructor(data) {
+ if (data.isNeg()) {
+ throw new Error("Input is negative");
+ }
+ if (data.gt(uint64MaxValue)) {
+ throw new Error("Input exceeds uint64 range");
+ }
+ this.data = data;
+ }
+ toBytesBigEndian() {
+ return Uint8Array.from(this.data.toArray("be", 8));
+ }
+ toBytesLittleEndian() {
+ return Uint8Array.from(this.data.toArray("le", 8));
+ }
+ toString() {
+ return this.data.toString(10);
+ }
+ toBigInt() {
+ return BigInt(this.toString());
+ }
+ toNumber() {
+ return this.data.toNumber();
+ }
+}
+exports.Uint64 = Uint64;
+// Assign classes to unused variables in order to verify static interface conformance at compile time.
+// Workaround for https://github.com/microsoft/TypeScript/issues/33892
+const _int53Class = Int53;
+const _uint53Class = Uint53;
+const _uint32Class = Uint32;
+const _uint64Class = Uint64;
+//# sourceMappingURL=integers.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js.map
new file mode 100644
index 00000000..2be4045e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/build/integers.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"integers.js","sourceRoot":"","sources":["../src/integers.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/package.json b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/package.json
new file mode 100644
index 00000000..6058cc82
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "@cosmjs/math",
+ "version": "0.31.0",
+ "description": "Math helpers for blockchain projects",
+ "contributors": [
+ "IOV SAS "
+ ],
+ "license": "Apache-2.0",
+ "main": "build/index.js",
+ "types": "build/index.d.ts",
+ "files": [
+ "build/",
+ "*.md",
+ "!*.spec.*",
+ "!**/testdata/"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cosmos/cosmjs/tree/main/packages/math"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "docs": "typedoc --options typedoc.js",
+ "lint": "eslint --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "lint-fix": "eslint --fix --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "format": "prettier --write --loglevel warn \"./src/**/*.ts\"",
+ "format-text": "prettier --write \"./*.md\"",
+ "test-node": "yarn node jasmine-testrunner.js",
+ "test-edge": "yarn pack-web && karma start --single-run --browsers Edge",
+ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",
+ "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless",
+ "test-safari": "yarn pack-web && karma start --single-run --browsers Safari",
+ "test": "yarn build-or-skip && yarn test-node",
+ "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet",
+ "build": "rm -rf ./build && tsc",
+ "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build",
+ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js"
+ },
+ "dependencies": {
+ "bn.js": "^5.2.0"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.1",
+ "@types/bn.js": "^5",
+ "@types/eslint-plugin-prettier": "^3",
+ "@types/jasmine": "^4",
+ "@types/karma-firefox-launcher": "^2",
+ "@types/karma-jasmine": "^4",
+ "@types/karma-jasmine-html-reporter": "^1",
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
+ "@typescript-eslint/parser": "^5.54.0",
+ "buffer": "^6.0.3",
+ "eslint": "^7.5",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-import-resolver-node": "^0.3.4",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-simple-import-sort": "^7.0.0",
+ "esm": "^3.2.25",
+ "glob": "^7.1.6",
+ "jasmine": "^4",
+ "jasmine-spec-reporter": "^6",
+ "karma": "^6.3.14",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-firefox-launcher": "^2.1.0",
+ "karma-jasmine": "^5",
+ "karma-jasmine-html-reporter": "^1.5.4",
+ "nyc": "^15.1.0",
+ "prettier": "^2.8.1",
+ "ses": "^0.11.0",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^8",
+ "typedoc": "^0.23",
+ "typescript": "~4.9",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.6.0"
+ }
+}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/README.md b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/README.md
new file mode 100644
index 00000000..984aca5d
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/README.md
@@ -0,0 +1,12 @@
+# @cosmjs/utils
+
+[](https://www.npmjs.com/package/@cosmjs/utils)
+
+Utility functions independent of blockchain applications. Primarily used for
+testing but stuff like `sleep` can also be useful at runtime.
+
+## License
+
+This package is part of the cosmjs repository, licensed under the Apache License
+2.0 (see [NOTICE](https://github.com/cosmos/cosmjs/blob/main/NOTICE) and
+[LICENSE](https://github.com/cosmos/cosmjs/blob/main/LICENSE)).
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.d.ts
new file mode 100644
index 00000000..b2017871
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.d.ts
@@ -0,0 +1,18 @@
+/**
+ * Compares the content of two arrays-like objects for equality.
+ *
+ * Equality is defined as having equal length and element values, where element equality means `===` returning `true`.
+ *
+ * This allows you to compare the content of a Buffer, Uint8Array or number[], ignoring the specific type.
+ * As a consequence, this returns different results than Jasmine's `toEqual`, which ensures elements have the same type.
+ */
+export declare function arrayContentEquals(a: ArrayLike, b: ArrayLike): boolean;
+/**
+ * Checks if `a` starts with the contents of `b`.
+ *
+ * This requires equality of the element values, where element equality means `===` returning `true`.
+ *
+ * This allows you to compare the content of a Buffer, Uint8Array or number[], ignoring the specific type.
+ * As a consequence, this returns different results than Jasmine's `toEqual`, which ensures elements have the same type.
+ */
+export declare function arrayContentStartsWith(a: ArrayLike, b: ArrayLike): boolean;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js
new file mode 100644
index 00000000..15114cdd
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js
@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.arrayContentStartsWith = exports.arrayContentEquals = void 0;
+/**
+ * Compares the content of two arrays-like objects for equality.
+ *
+ * Equality is defined as having equal length and element values, where element equality means `===` returning `true`.
+ *
+ * This allows you to compare the content of a Buffer, Uint8Array or number[], ignoring the specific type.
+ * As a consequence, this returns different results than Jasmine's `toEqual`, which ensures elements have the same type.
+ */
+function arrayContentEquals(a, b) {
+ if (a.length !== b.length)
+ return false;
+ for (let i = 0; i < a.length; ++i) {
+ if (a[i] !== b[i])
+ return false;
+ }
+ return true;
+}
+exports.arrayContentEquals = arrayContentEquals;
+/**
+ * Checks if `a` starts with the contents of `b`.
+ *
+ * This requires equality of the element values, where element equality means `===` returning `true`.
+ *
+ * This allows you to compare the content of a Buffer, Uint8Array or number[], ignoring the specific type.
+ * As a consequence, this returns different results than Jasmine's `toEqual`, which ensures elements have the same type.
+ */
+function arrayContentStartsWith(a, b) {
+ if (a.length < b.length)
+ return false;
+ for (let i = 0; i < b.length; ++i) {
+ if (a[i] !== b[i])
+ return false;
+ }
+ return true;
+}
+exports.arrayContentStartsWith = arrayContentStartsWith;
+//# sourceMappingURL=arrays.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js.map
new file mode 100644
index 00000000..eaa47f8e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/arrays.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../src/arrays.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,CAAe,EACf,CAAe;IAEf,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;KACjC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AATD,gDASC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CACpC,CAAe,EACf,CAAe;IAEf,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;KACjC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AATD,wDASC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.d.ts
new file mode 100644
index 00000000..428d5b48
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.d.ts
@@ -0,0 +1,3 @@
+export declare function assert(condition: any, msg?: string): asserts condition;
+export declare function assertDefined(value: T | undefined, msg?: string): asserts value is T;
+export declare function assertDefinedAndNotNull(value: T | undefined | null, msg?: string): asserts value is T;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js
new file mode 100644
index 00000000..e517bde3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.assertDefinedAndNotNull = exports.assertDefined = exports.assert = void 0;
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+function assert(condition, msg) {
+ if (!condition) {
+ throw new Error(msg || "condition is not truthy");
+ }
+}
+exports.assert = assert;
+function assertDefined(value, msg) {
+ if (value === undefined) {
+ throw new Error(msg ?? "value is undefined");
+ }
+}
+exports.assertDefined = assertDefined;
+function assertDefinedAndNotNull(value, msg) {
+ if (value === undefined || value === null) {
+ throw new Error(msg ?? "value is undefined or null");
+ }
+}
+exports.assertDefinedAndNotNull = assertDefinedAndNotNull;
+//# sourceMappingURL=assert.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js.map
new file mode 100644
index 00000000..1c0c6128
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/assert.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,SAAgB,MAAM,CAAC,SAAc,EAAE,GAAY;IACjD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;KACnD;AACH,CAAC;AAJD,wBAIC;AAED,SAAgB,aAAa,CAAI,KAAoB,EAAE,GAAY;IACjE,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;KAC9C;AACH,CAAC;AAJD,sCAIC;AAED,SAAgB,uBAAuB,CAAI,KAA2B,EAAE,GAAY;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;KACtD;AACH,CAAC;AAJD,0DAIC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.d.ts
new file mode 100644
index 00000000..62434818
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.d.ts
@@ -0,0 +1,4 @@
+export { arrayContentEquals, arrayContentStartsWith } from "./arrays";
+export { assert, assertDefined, assertDefinedAndNotNull } from "./assert";
+export { sleep } from "./sleep";
+export { isDefined, isNonNullObject, isUint8Array } from "./typechecks";
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js
new file mode 100644
index 00000000..8888737f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isUint8Array = exports.isNonNullObject = exports.isDefined = exports.sleep = exports.assertDefinedAndNotNull = exports.assertDefined = exports.assert = exports.arrayContentStartsWith = exports.arrayContentEquals = void 0;
+var arrays_1 = require("./arrays");
+Object.defineProperty(exports, "arrayContentEquals", { enumerable: true, get: function () { return arrays_1.arrayContentEquals; } });
+Object.defineProperty(exports, "arrayContentStartsWith", { enumerable: true, get: function () { return arrays_1.arrayContentStartsWith; } });
+var assert_1 = require("./assert");
+Object.defineProperty(exports, "assert", { enumerable: true, get: function () { return assert_1.assert; } });
+Object.defineProperty(exports, "assertDefined", { enumerable: true, get: function () { return assert_1.assertDefined; } });
+Object.defineProperty(exports, "assertDefinedAndNotNull", { enumerable: true, get: function () { return assert_1.assertDefinedAndNotNull; } });
+var sleep_1 = require("./sleep");
+Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return sleep_1.sleep; } });
+var typechecks_1 = require("./typechecks");
+Object.defineProperty(exports, "isDefined", { enumerable: true, get: function () { return typechecks_1.isDefined; } });
+Object.defineProperty(exports, "isNonNullObject", { enumerable: true, get: function () { return typechecks_1.isNonNullObject; } });
+Object.defineProperty(exports, "isUint8Array", { enumerable: true, get: function () { return typechecks_1.isUint8Array; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js.map
new file mode 100644
index 00000000..1bfe43e1
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAsE;AAA7D,4GAAA,kBAAkB,OAAA;AAAE,gHAAA,sBAAsB,OAAA;AACnD,mCAA0E;AAAjE,gGAAA,MAAM,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AACvD,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,2CAAwE;AAA/D,uGAAA,SAAS,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,0GAAA,YAAY,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.d.ts
new file mode 100644
index 00000000..deb121ba
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.d.ts
@@ -0,0 +1 @@
+export declare function sleep(ms: number): Promise;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js
new file mode 100644
index 00000000..a7863375
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.sleep = void 0;
+async function sleep(ms) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
+exports.sleep = sleep;
+//# sourceMappingURL=sleep.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js.map
new file mode 100644
index 00000000..2df3fd52
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/sleep.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;;AAAO,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAFD,sBAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.d.ts b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.d.ts
new file mode 100644
index 00000000..d33cb9b7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.d.ts
@@ -0,0 +1,20 @@
+/**
+ * Checks if data is a non-null object (i.e. matches the TypeScript object type).
+ *
+ * Note: this returns true for arrays, which are objects in JavaScript
+ * even though array and object are different types in JSON.
+ *
+ * @see https://www.typescriptlang.org/docs/handbook/basic-types.html#object
+ */
+export declare function isNonNullObject(data: unknown): data is object;
+/**
+ * Checks if data is an Uint8Array. Note: Buffer is treated as not a Uint8Array
+ */
+export declare function isUint8Array(data: unknown): data is Uint8Array;
+/**
+ * Checks if input is not undefined in a TypeScript-friendly way.
+ *
+ * This is convenient to use in e.g. `Array.filter` as it will convert
+ * the type of a `Array` to `Array`.
+ */
+export declare function isDefined(value: X | undefined): value is X;
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js
new file mode 100644
index 00000000..08eb5b95
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js
@@ -0,0 +1,46 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isDefined = exports.isUint8Array = exports.isNonNullObject = void 0;
+/**
+ * Checks if data is a non-null object (i.e. matches the TypeScript object type).
+ *
+ * Note: this returns true for arrays, which are objects in JavaScript
+ * even though array and object are different types in JSON.
+ *
+ * @see https://www.typescriptlang.org/docs/handbook/basic-types.html#object
+ */
+// eslint-disable-next-line @typescript-eslint/ban-types
+function isNonNullObject(data) {
+ return typeof data === "object" && data !== null;
+}
+exports.isNonNullObject = isNonNullObject;
+/**
+ * Checks if data is an Uint8Array. Note: Buffer is treated as not a Uint8Array
+ */
+function isUint8Array(data) {
+ if (!isNonNullObject(data))
+ return false;
+ // Avoid instanceof check which is unreliable in some JS environments
+ // https://medium.com/@simonwarta/limitations-of-the-instanceof-operator-f4bcdbe7a400
+ // Use check that was discussed in https://github.com/crypto-browserify/pbkdf2/pull/81
+ if (Object.prototype.toString.call(data) !== "[object Uint8Array]")
+ return false;
+ if (typeof Buffer !== "undefined" && typeof Buffer.isBuffer !== "undefined") {
+ // Buffer.isBuffer is available at runtime
+ if (Buffer.isBuffer(data))
+ return false;
+ }
+ return true;
+}
+exports.isUint8Array = isUint8Array;
+/**
+ * Checks if input is not undefined in a TypeScript-friendly way.
+ *
+ * This is convenient to use in e.g. `Array.filter` as it will convert
+ * the type of a `Array` to `Array`.
+ */
+function isDefined(value) {
+ return value !== undefined;
+}
+exports.isDefined = isDefined;
+//# sourceMappingURL=typechecks.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js.map b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js.map
new file mode 100644
index 00000000..b037e9af
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/build/typechecks.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"typechecks.js","sourceRoot":"","sources":["../src/typechecks.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,wDAAwD;AACxD,SAAgB,eAAe,CAAC,IAAa;IAC3C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC;AACnD,CAAC;AAFD,0CAEC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAa;IACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,qEAAqE;IACrE,qFAAqF;IAErF,sFAAsF;IACtF,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,qBAAqB;QAAE,OAAO,KAAK,CAAC;IAEjF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;QAC3E,0CAA0C;QAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;KACzC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAfD,oCAeC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAI,KAAoB;IAC/C,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAFD,8BAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/package.json b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/package.json
new file mode 100644
index 00000000..a8b55379
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils/package.json
@@ -0,0 +1,78 @@
+{
+ "name": "@cosmjs/utils",
+ "version": "0.31.0",
+ "description": "Utility tools, primarily for testing code",
+ "contributors": [
+ "IOV SAS "
+ ],
+ "license": "Apache-2.0",
+ "main": "build/index.js",
+ "types": "build/index.d.ts",
+ "files": [
+ "build/",
+ "*.md",
+ "!*.spec.*",
+ "!**/testdata/"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cosmos/cosmjs/tree/main/packages/utils"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "docs": "typedoc --options typedoc.js",
+ "lint": "eslint --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "lint-fix": "eslint --fix --max-warnings 0 \"./**/*.ts\" \"./*.js\"",
+ "format": "prettier --write --loglevel warn \"./src/**/*.ts\"",
+ "format-text": "prettier --write \"./*.md\"",
+ "build": "rm -rf ./build && tsc",
+ "build-or-skip": "[ -n \"$SKIP_BUILD\" ] || yarn build",
+ "test-node": "yarn node jasmine-testrunner.js",
+ "test": "yarn build-or-skip && yarn test-node",
+ "coverage": "nyc --reporter=text --reporter=lcov yarn test --quiet",
+ "pack-web": "yarn build-or-skip && webpack --mode development --config webpack.web.config.js",
+ "test-edge": "yarn pack-web && karma start --single-run --browsers Edge",
+ "test-firefox": "yarn pack-web && karma start --single-run --browsers Firefox",
+ "test-chrome": "yarn pack-web && karma start --single-run --browsers ChromeHeadless",
+ "test-safari": "yarn pack-web && karma start --single-run --browsers Safari"
+ },
+ "devDependencies": {
+ "@istanbuljs/nyc-config-typescript": "^1.0.1",
+ "@types/eslint-plugin-prettier": "^3",
+ "@types/jasmine": "^4",
+ "@types/karma-firefox-launcher": "^2",
+ "@types/karma-jasmine": "^4",
+ "@types/karma-jasmine-html-reporter": "^1",
+ "@types/node": "^18",
+ "@typescript-eslint/eslint-plugin": "^5.54.0",
+ "@typescript-eslint/parser": "^5.54.0",
+ "buffer": "^6.0.3",
+ "eslint": "^7.5",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-import-resolver-node": "^0.3.4",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-prettier": "^3.4.0",
+ "eslint-plugin-simple-import-sort": "^7.0.0",
+ "esm": "^3.2.25",
+ "glob": "^7.1.6",
+ "jasmine": "^4",
+ "jasmine-spec-reporter": "^6",
+ "karma": "^6.3.14",
+ "karma-chrome-launcher": "^3.1.0",
+ "karma-firefox-launcher": "^2.1.0",
+ "karma-jasmine": "^5",
+ "karma-jasmine-html-reporter": "^1.5.4",
+ "nyc": "^15.1.0",
+ "prettier": "^2.8.1",
+ "ses": "^0.11.0",
+ "source-map-support": "^0.5.19",
+ "ts-node": "^8",
+ "typedoc": "^0.23",
+ "typescript": "~4.9",
+ "webpack": "^5.76.0",
+ "webpack-cli": "^4.6.0"
+ }
+}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/events.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/events.d.ts
new file mode 100644
index 00000000..ca35ce92
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/events.d.ts
@@ -0,0 +1,32 @@
+import { tendermint34, tendermint37 } from "@cosmjs/tendermint-rpc";
+/**
+ * An event attribute.
+ *
+ * This is the same attribute type as tendermint34.Attribute and tendermint35.EventAttribute
+ * but `key` and `value` are unified to strings. The conversion
+ * from bytes to string in the Tendermint 0.34 case should be done by performing
+ * [lossy] UTF-8 decoding.
+ *
+ * [lossy]: https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf8_lossy
+ */
+export interface Attribute {
+ readonly key: string;
+ readonly value: string;
+}
+/**
+ * The same event type as tendermint34.Event and tendermint35.Event
+ * but attribute keys and values are unified to strings. The conversion
+ * from bytes to string in the Tendermint 0.34 case should be done by performing
+ * [lossy] UTF-8 decoding.
+ *
+ * [lossy]: https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf8_lossy
+ */
+export interface Event {
+ readonly type: string;
+ readonly attributes: readonly Attribute[];
+}
+/**
+ * Takes a Tendermint 0.34 or 0.37 event with binary encoded key and value
+ * and converts it into an `Event` with string attributes.
+ */
+export declare function fromTendermintEvent(event: tendermint34.Event | tendermint37.Event): Event;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/events.js b/ts-client/node_modules/@cosmjs/stargate/build/events.js
new file mode 100644
index 00000000..90364c5b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/events.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.fromTendermintEvent = void 0;
+const encoding_1 = require("@cosmjs/encoding");
+/**
+ * Takes a Tendermint 0.34 or 0.37 event with binary encoded key and value
+ * and converts it into an `Event` with string attributes.
+ */
+function fromTendermintEvent(event) {
+ return {
+ type: event.type,
+ attributes: event.attributes.map((attr) => ({
+ key: typeof attr.key == "string" ? attr.key : (0, encoding_1.fromUtf8)(attr.key, true),
+ value: typeof attr.value == "string" ? attr.value : (0, encoding_1.fromUtf8)(attr.value, true),
+ })),
+ };
+}
+exports.fromTendermintEvent = fromTendermintEvent;
+//# sourceMappingURL=events.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/events.js.map b/ts-client/node_modules/@cosmjs/stargate/build/events.js.map
new file mode 100644
index 00000000..c50fc1e8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/events.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AA+B5C;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAA8C;IAChF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAC9B,CAAC,IAAI,EAAa,EAAE,CAAC,CAAC;YACpB,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;YACtE,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;SAC/E,CAAC,CACH;KACF,CAAC;AACJ,CAAC;AAVD,kDAUC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.d.ts
new file mode 100644
index 00000000..4ca647d6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.d.ts
@@ -0,0 +1,15 @@
+import { Any } from "cosmjs-types/google/protobuf/any";
+import { QueryClient } from "../../queryclient";
+export interface AuthExtension {
+ readonly auth: {
+ /**
+ * Returns an account if it exists and `null` otherwise.
+ *
+ * The account is a protobuf Any in order to be able to support many different
+ * account types in one API. The caller needs to switch over the expected and supported
+ * `typeUrl` and decode the `value` using its own type decoder.
+ */
+ readonly account: (address: string) => Promise;
+ };
+}
+export declare function setupAuthExtension(base: QueryClient): AuthExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js
new file mode 100644
index 00000000..6d8c55b0
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupAuthExtension = void 0;
+const query_1 = require("cosmjs-types/cosmos/auth/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupAuthExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ auth: {
+ account: async (address) => {
+ const { account } = await queryService.Account({ address: address });
+ return account ?? null;
+ },
+ },
+ };
+}
+exports.setupAuthExtension = setupAuthExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js.map
new file mode 100644
index 00000000..bfc8b528
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/auth/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/auth/queries.ts"],"names":[],"mappings":";;;AAAA,kEAAyE;AAGzE,mDAAyE;AAezE,SAAgB,kBAAkB,CAAC,IAAiB;IAClD,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBACjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrE,OAAO,OAAO,IAAI,IAAI,CAAC;YACzB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAdD,gDAcC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.d.ts
new file mode 100644
index 00000000..480d56aa
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.d.ts
@@ -0,0 +1,2 @@
+import { AminoConverters } from "../../aminotypes";
+export declare function createAuthzAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js
new file mode 100644
index 00000000..5db0fdaf
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createAuthzAminoConverters = void 0;
+function createAuthzAminoConverters() {
+ return {
+ // For Cosmos SDK < 0.46 the Amino JSON codec was broken on chain and thus inaccessible.
+ // Now this can be implemented for 0.46+ chains, see
+ // https://github.com/cosmos/cosmjs/issues/1092
+ //
+ // "/cosmos.authz.v1beta1.MsgGrant": IMPLEMENT ME,
+ // "/cosmos.authz.v1beta1.MsgExec": IMPLEMENT ME,
+ // "/cosmos.authz.v1beta1.MsgRevoke": IMPLEMENT ME,
+ };
+}
+exports.createAuthzAminoConverters = createAuthzAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js.map
new file mode 100644
index 00000000..65bd1fab
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/authz/aminomessages.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B;IACxC,OAAO;IACL,wFAAwF;IACxF,oDAAoD;IACpD,+CAA+C;IAC/C,EAAE;IACF,kDAAkD;IAClD,iDAAiD;IACjD,mDAAmD;KACpD,CAAC;AACJ,CAAC;AAVD,gEAUC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.d.ts
new file mode 100644
index 00000000..ba552aa5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.d.ts
@@ -0,0 +1,2 @@
+import { GeneratedType } from "@cosmjs/proto-signing";
+export declare const authzTypes: ReadonlyArray<[string, GeneratedType]>;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js
new file mode 100644
index 00000000..818031f6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.authzTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/authz/v1beta1/tx");
+exports.authzTypes = [
+ ["/cosmos.authz.v1beta1.MsgExec", tx_1.MsgExec],
+ ["/cosmos.authz.v1beta1.MsgGrant", tx_1.MsgGrant],
+ ["/cosmos.authz.v1beta1.MsgRevoke", tx_1.MsgRevoke],
+];
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js.map
new file mode 100644
index 00000000..27d7e248
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/authz/messages.ts"],"names":[],"mappings":";;;AACA,6DAAoF;AAEvE,QAAA,UAAU,GAA2C;IAChE,CAAC,+BAA+B,EAAE,YAAO,CAAC;IAC1C,CAAC,gCAAgC,EAAE,aAAQ,CAAC;IAC5C,CAAC,iCAAiC,EAAE,cAAS,CAAC;CAC/C,CAAC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.d.ts
new file mode 100644
index 00000000..354eba59
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.d.ts
@@ -0,0 +1,10 @@
+import { QueryGranteeGrantsResponse, QueryGranterGrantsResponse, QueryGrantsResponse } from "cosmjs-types/cosmos/authz/v1beta1/query";
+import { QueryClient } from "../../queryclient";
+export interface AuthzExtension {
+ readonly authz: {
+ readonly grants: (granter: string, grantee: string, msgTypeUrl: string, paginationKey?: Uint8Array) => Promise;
+ readonly granteeGrants: (grantee: string, paginationKey?: Uint8Array) => Promise;
+ readonly granterGrants: (granter: string, paginationKey?: Uint8Array) => Promise;
+ };
+}
+export declare function setupAuthzExtension(base: QueryClient): AuthzExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js
new file mode 100644
index 00000000..8a8d787a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupAuthzExtension = void 0;
+const query_1 = require("cosmjs-types/cosmos/authz/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupAuthzExtension(base) {
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ authz: {
+ grants: async (granter, grantee, msgTypeUrl, paginationKey) => {
+ return await queryService.Grants({
+ granter: granter,
+ grantee: grantee,
+ msgTypeUrl: msgTypeUrl,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ },
+ granteeGrants: async (grantee, paginationKey) => {
+ return await queryService.GranteeGrants({
+ grantee: grantee,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ },
+ granterGrants: async (granter, paginationKey) => {
+ return await queryService.GranterGrants({
+ granter: granter,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ },
+ },
+ };
+}
+exports.setupAuthzExtension = setupAuthzExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js.map
new file mode 100644
index 00000000..970dc3b1
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/authz/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/authz/queries.ts"],"names":[],"mappings":";;;AAAA,mEAKiD;AAEjD,mDAA2F;AAqB3F,SAAgB,mBAAmB,CAAC,IAAiB;IACnD,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,UAAkB,EAAE,aAA0B,EAAE,EAAE;gBACjG,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC;oBAC/B,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,UAAU;oBACtB,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YACD,aAAa,EAAE,KAAK,EAAE,OAAe,EAAE,aAA0B,EAAE,EAAE;gBACnE,OAAO,MAAM,YAAY,CAAC,aAAa,CAAC;oBACtC,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YACD,aAAa,EAAE,KAAK,EAAE,OAAe,EAAE,aAA0B,EAAE,EAAE;gBACnE,OAAO,MAAM,YAAY,CAAC,aAAa,CAAC;oBACtC,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AA9BD,kDA8BC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.d.ts
new file mode 100644
index 00000000..1ee55b17
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.d.ts
@@ -0,0 +1,35 @@
+import { AminoMsg, Coin } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+/** A high level transaction of the coin module */
+export interface AminoMsgSend extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgSend";
+ readonly value: {
+ /** Bech32 account address */
+ readonly from_address: string;
+ /** Bech32 account address */
+ readonly to_address: string;
+ readonly amount: readonly Coin[];
+ };
+}
+export declare function isAminoMsgSend(msg: AminoMsg): msg is AminoMsgSend;
+interface Input {
+ /** Bech32 account address */
+ readonly address: string;
+ readonly coins: readonly Coin[];
+}
+interface Output {
+ /** Bech32 account address */
+ readonly address: string;
+ readonly coins: readonly Coin[];
+}
+/** A high level transaction of the coin module */
+export interface AminoMsgMultiSend extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgMultiSend";
+ readonly value: {
+ readonly inputs: readonly Input[];
+ readonly outputs: readonly Output[];
+ };
+}
+export declare function isAminoMsgMultiSend(msg: AminoMsg): msg is AminoMsgMultiSend;
+export declare function createBankAminoConverters(): AminoConverters;
+export {};
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js
new file mode 100644
index 00000000..02e3499c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js
@@ -0,0 +1,53 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createBankAminoConverters = exports.isAminoMsgMultiSend = exports.isAminoMsgSend = void 0;
+function isAminoMsgSend(msg) {
+ return msg.type === "cosmos-sdk/MsgSend";
+}
+exports.isAminoMsgSend = isAminoMsgSend;
+function isAminoMsgMultiSend(msg) {
+ return msg.type === "cosmos-sdk/MsgMultiSend";
+}
+exports.isAminoMsgMultiSend = isAminoMsgMultiSend;
+function createBankAminoConverters() {
+ return {
+ "/cosmos.bank.v1beta1.MsgSend": {
+ aminoType: "cosmos-sdk/MsgSend",
+ toAmino: ({ fromAddress, toAddress, amount }) => ({
+ from_address: fromAddress,
+ to_address: toAddress,
+ amount: [...amount],
+ }),
+ fromAmino: ({ from_address, to_address, amount }) => ({
+ fromAddress: from_address,
+ toAddress: to_address,
+ amount: [...amount],
+ }),
+ },
+ "/cosmos.bank.v1beta1.MsgMultiSend": {
+ aminoType: "cosmos-sdk/MsgMultiSend",
+ toAmino: ({ inputs, outputs }) => ({
+ inputs: inputs.map((input) => ({
+ address: input.address,
+ coins: [...input.coins],
+ })),
+ outputs: outputs.map((output) => ({
+ address: output.address,
+ coins: [...output.coins],
+ })),
+ }),
+ fromAmino: ({ inputs, outputs }) => ({
+ inputs: inputs.map((input) => ({
+ address: input.address,
+ coins: [...input.coins],
+ })),
+ outputs: outputs.map((output) => ({
+ address: output.address,
+ coins: [...output.coins],
+ })),
+ }),
+ },
+ };
+}
+exports.createBankAminoConverters = createBankAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js.map
new file mode 100644
index 00000000..ec366f4f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/bank/aminomessages.ts"],"names":[],"mappings":";;;AAmBA,SAAgB,cAAc,CAAC,GAAa;IAC1C,OAAO,GAAG,CAAC,IAAI,KAAK,oBAAoB,CAAC;AAC3C,CAAC;AAFD,wCAEC;AAuBD,SAAgB,mBAAmB,CAAC,GAAa;IAC/C,OAAO,GAAG,CAAC,IAAI,KAAK,yBAAyB,CAAC;AAChD,CAAC;AAFD,kDAEC;AAED,SAAgB,yBAAyB;IACvC,OAAO;QACL,8BAA8B,EAAE;YAC9B,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAW,EAAyB,EAAE,CAAC,CAAC;gBAChF,YAAY,EAAE,WAAW;gBACzB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;aACpB,CAAC;YACF,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAyB,EAAW,EAAE,CAAC,CAAC;gBACpF,WAAW,EAAE,YAAY;gBACzB,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;aACpB,CAAC;SACH;QACD,mCAAmC,EAAE;YACnC,SAAS,EAAE,yBAAyB;YACpC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAgB,EAA8B,EAAE,CAAC,CAAC;gBAC3E,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;iBACxB,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;iBACzB,CAAC,CAAC;aACJ,CAAC;YACF,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAA8B,EAAgB,EAAE,CAAC,CAAC;gBAC7E,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;iBACxB,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAChC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;iBACzB,CAAC,CAAC;aACJ,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAvCD,8DAuCC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.d.ts
new file mode 100644
index 00000000..a0d19c11
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.d.ts
@@ -0,0 +1,8 @@
+import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing";
+import { MsgSend } from "cosmjs-types/cosmos/bank/v1beta1/tx";
+export declare const bankTypes: ReadonlyArray<[string, GeneratedType]>;
+export interface MsgSendEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.bank.v1beta1.MsgSend";
+ readonly value: Partial;
+}
+export declare function isMsgSendEncodeObject(encodeObject: EncodeObject): encodeObject is MsgSendEncodeObject;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js
new file mode 100644
index 00000000..c9249182
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMsgSendEncodeObject = exports.bankTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/bank/v1beta1/tx");
+exports.bankTypes = [
+ ["/cosmos.bank.v1beta1.MsgMultiSend", tx_1.MsgMultiSend],
+ ["/cosmos.bank.v1beta1.MsgSend", tx_1.MsgSend],
+];
+function isMsgSendEncodeObject(encodeObject) {
+ return encodeObject.typeUrl === "/cosmos.bank.v1beta1.MsgSend";
+}
+exports.isMsgSendEncodeObject = isMsgSendEncodeObject;
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js.map
new file mode 100644
index 00000000..7acc2cf3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/bank/messages.ts"],"names":[],"mappings":";;;AACA,4DAA4E;AAE/D,QAAA,SAAS,GAA2C;IAC/D,CAAC,mCAAmC,EAAE,iBAAY,CAAC;IACnD,CAAC,8BAA8B,EAAE,YAAO,CAAC;CAC1C,CAAC;AAOF,SAAgB,qBAAqB,CAAC,YAA0B;IAC9D,OAAQ,YAAoC,CAAC,OAAO,KAAK,8BAA8B,CAAC;AAC1F,CAAC;AAFD,sDAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.d.ts
new file mode 100644
index 00000000..5caaa521
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.d.ts
@@ -0,0 +1,15 @@
+import { Metadata } from "cosmjs-types/cosmos/bank/v1beta1/bank";
+import { QueryTotalSupplyResponse } from "cosmjs-types/cosmos/bank/v1beta1/query";
+import { Coin } from "cosmjs-types/cosmos/base/v1beta1/coin";
+import { QueryClient } from "../../queryclient";
+export interface BankExtension {
+ readonly bank: {
+ readonly balance: (address: string, denom: string) => Promise;
+ readonly allBalances: (address: string) => Promise;
+ readonly totalSupply: (paginationKey?: Uint8Array) => Promise;
+ readonly supplyOf: (denom: string) => Promise;
+ readonly denomMetadata: (denom: string) => Promise;
+ readonly denomsMetadata: () => Promise;
+ };
+}
+export declare function setupBankExtension(base: QueryClient): BankExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js
new file mode 100644
index 00000000..af6f8302
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js
@@ -0,0 +1,50 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupBankExtension = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const utils_1 = require("@cosmjs/utils");
+const query_1 = require("cosmjs-types/cosmos/bank/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupBankExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ bank: {
+ balance: async (address, denom) => {
+ const { balance } = await queryService.Balance({ address: address, denom: denom });
+ (0, utils_1.assert)(balance);
+ return balance;
+ },
+ allBalances: async (address) => {
+ const { balances } = await queryService.AllBalances({ address: address });
+ return balances;
+ },
+ totalSupply: async (paginationKey) => {
+ const response = await queryService.TotalSupply({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ supplyOf: async (denom) => {
+ const { amount } = await queryService.SupplyOf({ denom: denom });
+ (0, utils_1.assert)(amount);
+ return amount;
+ },
+ denomMetadata: async (denom) => {
+ const { metadata } = await queryService.DenomMetadata({ denom });
+ (0, utils_1.assert)(metadata);
+ return metadata;
+ },
+ denomsMetadata: async () => {
+ const { metadatas } = await queryService.DenomsMetadata({
+ pagination: undefined, // Not implemented
+ });
+ return metadatas;
+ },
+ },
+ };
+}
+exports.setupBankExtension = setupBankExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js.map
new file mode 100644
index 00000000..044848c3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/bank/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/bank/queries.ts"],"names":[],"mappings":";;;AAAA,yDAAyD;AACzD,yCAAuC;AAEvC,kEAAmG;AAGnG,mDAA2F;AAa3F,SAAgB,kBAAkB,CAAC,IAAiB;IAClD,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnF,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;gBAChB,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,WAAW,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;gBACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1E,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,WAAW,EAAE,KAAK,EAAE,aAA0B,EAAE,EAAE;gBAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;oBAC9C,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;gBAChC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;gBACf,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,aAAa,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;gBACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,cAAc,EAAE,KAAK,IAAI,EAAE;gBACzB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;oBACtD,UAAU,EAAE,SAAS,EAAE,kBAAkB;iBAC1C,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAzCD,gDAyCC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.d.ts
new file mode 100644
index 00000000..e70d431c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.d.ts
@@ -0,0 +1,14 @@
+import { AminoMsg } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+/** Verifies a particular invariance */
+export interface AminoMsgVerifyInvariant extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgVerifyInvariant";
+ readonly value: {
+ /** Bech32 account address */
+ readonly sender: string;
+ readonly invariant_module_name: string;
+ readonly invariant_route: string;
+ };
+}
+export declare function isAminoMsgVerifyInvariant(msg: AminoMsg): msg is AminoMsgVerifyInvariant;
+export declare function createCrysisAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js
new file mode 100644
index 00000000..ed9cddc1
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createCrysisAminoConverters = exports.isAminoMsgVerifyInvariant = void 0;
+function isAminoMsgVerifyInvariant(msg) {
+ return msg.type === "cosmos-sdk/MsgVerifyInvariant";
+}
+exports.isAminoMsgVerifyInvariant = isAminoMsgVerifyInvariant;
+function createCrysisAminoConverters() {
+ throw new Error("Not implemented");
+}
+exports.createCrysisAminoConverters = createCrysisAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js.map
new file mode 100644
index 00000000..7ed4ae68
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/crisis/aminomessages.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,yBAAyB,CAAC,GAAa;IACrD,OAAO,GAAG,CAAC,IAAI,KAAK,+BAA+B,CAAC;AACtD,CAAC;AAFD,8DAEC;AAED,SAAgB,2BAA2B;IACzC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAFD,kEAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.d.ts
new file mode 100644
index 00000000..0e763bab
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.d.ts
@@ -0,0 +1,44 @@
+import { AminoMsg, Coin } from "@cosmjs/amino";
+import { AminoConverter } from "../..";
+/** Changes the withdraw address for a delegator (or validator self-delegation) */
+export interface AminoMsgSetWithdrawAddress extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgModifyWithdrawAddress";
+ readonly value: {
+ /** Bech32 account address */
+ readonly delegator_address: string;
+ /** Bech32 account address */
+ readonly withdraw_address: string;
+ };
+}
+export declare function isAminoMsgSetWithdrawAddress(msg: AminoMsg): msg is AminoMsgSetWithdrawAddress;
+/** Message for delegation withdraw from a single validator */
+export interface AminoMsgWithdrawDelegatorReward extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgWithdrawDelegationReward";
+ readonly value: {
+ /** Bech32 account address */
+ readonly delegator_address: string;
+ /** Bech32 account address */
+ readonly validator_address: string;
+ };
+}
+export declare function isAminoMsgWithdrawDelegatorReward(msg: AminoMsg): msg is AminoMsgWithdrawDelegatorReward;
+/** Message for validator withdraw */
+export interface AminoMsgWithdrawValidatorCommission extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgWithdrawValidatorCommission";
+ readonly value: {
+ /** Bech32 account address */
+ readonly validator_address: string;
+ };
+}
+export declare function isAminoMsgWithdrawValidatorCommission(msg: AminoMsg): msg is AminoMsgWithdrawValidatorCommission;
+/** Allows an account to directly fund the community pool. */
+export interface AminoMsgFundCommunityPool extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgFundCommunityPool";
+ readonly value: {
+ readonly amount: readonly Coin[];
+ /** Bech32 account address */
+ readonly depositor: string;
+ };
+}
+export declare function isAminoMsgFundCommunityPool(msg: AminoMsg): msg is AminoMsgFundCommunityPool;
+export declare function createDistributionAminoConverters(): Record;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js
new file mode 100644
index 00000000..3e839e24
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js
@@ -0,0 +1,69 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createDistributionAminoConverters = exports.isAminoMsgFundCommunityPool = exports.isAminoMsgWithdrawValidatorCommission = exports.isAminoMsgWithdrawDelegatorReward = exports.isAminoMsgSetWithdrawAddress = void 0;
+function isAminoMsgSetWithdrawAddress(msg) {
+ // NOTE: Type string and names diverge here!
+ return msg.type === "cosmos-sdk/MsgModifyWithdrawAddress";
+}
+exports.isAminoMsgSetWithdrawAddress = isAminoMsgSetWithdrawAddress;
+function isAminoMsgWithdrawDelegatorReward(msg) {
+ // NOTE: Type string and names diverge here!
+ return msg.type === "cosmos-sdk/MsgWithdrawDelegationReward";
+}
+exports.isAminoMsgWithdrawDelegatorReward = isAminoMsgWithdrawDelegatorReward;
+function isAminoMsgWithdrawValidatorCommission(msg) {
+ return msg.type === "cosmos-sdk/MsgWithdrawValidatorCommission";
+}
+exports.isAminoMsgWithdrawValidatorCommission = isAminoMsgWithdrawValidatorCommission;
+function isAminoMsgFundCommunityPool(msg) {
+ return msg.type === "cosmos-sdk/MsgFundCommunityPool";
+}
+exports.isAminoMsgFundCommunityPool = isAminoMsgFundCommunityPool;
+function createDistributionAminoConverters() {
+ return {
+ "/cosmos.distribution.v1beta1.MsgFundCommunityPool": {
+ aminoType: "cosmos-sdk/MsgFundCommunityPool",
+ toAmino: ({ amount, depositor }) => ({
+ amount: [...amount],
+ depositor: depositor,
+ }),
+ fromAmino: ({ amount, depositor }) => ({
+ amount: [...amount],
+ depositor: depositor,
+ }),
+ },
+ "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress": {
+ aminoType: "cosmos-sdk/MsgModifyWithdrawAddress",
+ toAmino: ({ delegatorAddress, withdrawAddress, }) => ({
+ delegator_address: delegatorAddress,
+ withdraw_address: withdrawAddress,
+ }),
+ fromAmino: ({ delegator_address, withdraw_address, }) => ({
+ delegatorAddress: delegator_address,
+ withdrawAddress: withdraw_address,
+ }),
+ },
+ "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward": {
+ aminoType: "cosmos-sdk/MsgWithdrawDelegationReward",
+ toAmino: ({ delegatorAddress, validatorAddress, }) => ({
+ delegator_address: delegatorAddress,
+ validator_address: validatorAddress,
+ }),
+ fromAmino: ({ delegator_address, validator_address, }) => ({
+ delegatorAddress: delegator_address,
+ validatorAddress: validator_address,
+ }),
+ },
+ "/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission": {
+ aminoType: "cosmos-sdk/MsgWithdrawValidatorCommission",
+ toAmino: ({ validatorAddress, }) => ({
+ validator_address: validatorAddress,
+ }),
+ fromAmino: ({ validator_address, }) => ({
+ validatorAddress: validator_address,
+ }),
+ },
+ };
+}
+exports.createDistributionAminoConverters = createDistributionAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js.map
new file mode 100644
index 00000000..b370a384
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/distribution/aminomessages.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,4BAA4B,CAAC,GAAa;IACxD,4CAA4C;IAC5C,OAAO,GAAG,CAAC,IAAI,KAAK,qCAAqC,CAAC;AAC5D,CAAC;AAHD,oEAGC;AAcD,SAAgB,iCAAiC,CAAC,GAAa;IAC7D,4CAA4C;IAC5C,OAAO,GAAG,CAAC,IAAI,KAAK,wCAAwC,CAAC;AAC/D,CAAC;AAHD,8EAGC;AAWD,SAAgB,qCAAqC,CACnD,GAAa;IAEb,OAAO,GAAG,CAAC,IAAI,KAAK,2CAA2C,CAAC;AAClE,CAAC;AAJD,sFAIC;AAYD,SAAgB,2BAA2B,CAAC,GAAa;IACvD,OAAO,GAAG,CAAC,IAAI,KAAK,iCAAiC,CAAC;AACxD,CAAC;AAFD,kEAEC;AAED,SAAgB,iCAAiC;IAC/C,OAAO;QACL,mDAAmD,EAAE;YACnD,SAAS,EAAE,iCAAiC;YAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAwB,EAAsC,EAAE,CAAC,CAAC;gBAC7F,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnB,SAAS,EAAE,SAAS;aACrB,CAAC;YACF,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAsC,EAAwB,EAAE,CAAC,CAAC;gBAC/F,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnB,SAAS,EAAE,SAAS;aACrB,CAAC;SACH;QACD,oDAAoD,EAAE;YACpD,SAAS,EAAE,qCAAqC;YAChD,OAAO,EAAE,CAAC,EACR,gBAAgB,EAChB,eAAe,GACO,EAAuC,EAAE,CAAC,CAAC;gBACjE,iBAAiB,EAAE,gBAAgB;gBACnC,gBAAgB,EAAE,eAAe;aAClC,CAAC;YACF,SAAS,EAAE,CAAC,EACV,iBAAiB,EACjB,gBAAgB,GACoB,EAAyB,EAAE,CAAC,CAAC;gBACjE,gBAAgB,EAAE,iBAAiB;gBACnC,eAAe,EAAE,gBAAgB;aAClC,CAAC;SACH;QACD,yDAAyD,EAAE;YACzD,SAAS,EAAE,wCAAwC;YACnD,OAAO,EAAE,CAAC,EACR,gBAAgB,EAChB,gBAAgB,GACW,EAA4C,EAAE,CAAC,CAAC;gBAC3E,iBAAiB,EAAE,gBAAgB;gBACnC,iBAAiB,EAAE,gBAAgB;aACpC,CAAC;YACF,SAAS,EAAE,CAAC,EACV,iBAAiB,EACjB,iBAAiB,GACwB,EAA8B,EAAE,CAAC,CAAC;gBAC3E,gBAAgB,EAAE,iBAAiB;gBACnC,gBAAgB,EAAE,iBAAiB;aACpC,CAAC;SACH;QACD,6DAA6D,EAAE;YAC7D,SAAS,EAAE,2CAA2C;YACtD,OAAO,EAAE,CAAC,EACR,gBAAgB,GACe,EAAgD,EAAE,CAAC,CAAC;gBACnF,iBAAiB,EAAE,gBAAgB;aACpC,CAAC;YACF,SAAS,EAAE,CAAC,EACV,iBAAiB,GAC4B,EAAkC,EAAE,CAAC,CAAC;gBACnF,gBAAgB,EAAE,iBAAiB;aACpC,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AA7DD,8EA6DC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.d.ts
new file mode 100644
index 00000000..6f75f0fd
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.d.ts
@@ -0,0 +1,8 @@
+import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing";
+import { MsgWithdrawDelegatorReward } from "cosmjs-types/cosmos/distribution/v1beta1/tx";
+export declare const distributionTypes: ReadonlyArray<[string, GeneratedType]>;
+export interface MsgWithdrawDelegatorRewardEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward";
+ readonly value: Partial;
+}
+export declare function isMsgWithdrawDelegatorRewardEncodeObject(object: EncodeObject): object is MsgWithdrawDelegatorRewardEncodeObject;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js
new file mode 100644
index 00000000..d0866ad5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMsgWithdrawDelegatorRewardEncodeObject = exports.distributionTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/distribution/v1beta1/tx");
+exports.distributionTypes = [
+ ["/cosmos.distribution.v1beta1.MsgFundCommunityPool", tx_1.MsgFundCommunityPool],
+ ["/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", tx_1.MsgSetWithdrawAddress],
+ ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", tx_1.MsgWithdrawDelegatorReward],
+ ["/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission", tx_1.MsgWithdrawValidatorCommission],
+];
+function isMsgWithdrawDelegatorRewardEncodeObject(object) {
+ return (object.typeUrl ===
+ "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward");
+}
+exports.isMsgWithdrawDelegatorRewardEncodeObject = isMsgWithdrawDelegatorRewardEncodeObject;
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js.map
new file mode 100644
index 00000000..3e1500d4
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/distribution/messages.ts"],"names":[],"mappings":";;;AACA,oEAKqD;AAExC,QAAA,iBAAiB,GAA2C;IACvE,CAAC,mDAAmD,EAAE,yBAAoB,CAAC;IAC3E,CAAC,oDAAoD,EAAE,0BAAqB,CAAC;IAC7E,CAAC,yDAAyD,EAAE,+BAA0B,CAAC;IACvF,CAAC,6DAA6D,EAAE,mCAA8B,CAAC;CAChG,CAAC;AAOF,SAAgB,wCAAwC,CACtD,MAAoB;IAEpB,OAAO,CACJ,MAAiD,CAAC,OAAO;QAC1D,yDAAyD,CAC1D,CAAC;AACJ,CAAC;AAPD,4FAOC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.d.ts
new file mode 100644
index 00000000..66111484
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.d.ts
@@ -0,0 +1,16 @@
+import { QueryCommunityPoolResponse, QueryDelegationRewardsResponse, QueryDelegationTotalRewardsResponse, QueryDelegatorValidatorsResponse, QueryDelegatorWithdrawAddressResponse, QueryParamsResponse, QueryValidatorCommissionResponse, QueryValidatorOutstandingRewardsResponse, QueryValidatorSlashesResponse } from "cosmjs-types/cosmos/distribution/v1beta1/query";
+import { QueryClient } from "../../queryclient";
+export interface DistributionExtension {
+ readonly distribution: {
+ communityPool: () => Promise;
+ delegationRewards: (delegatorAddress: string, validatorAddress: string) => Promise;
+ delegationTotalRewards: (delegatorAddress: string) => Promise;
+ delegatorValidators: (delegatorAddress: string) => Promise;
+ delegatorWithdrawAddress: (delegatorAddress: string) => Promise;
+ params: () => Promise;
+ validatorCommission: (validatorAddress: string) => Promise;
+ validatorOutstandingRewards: (validatorAddress: string) => Promise;
+ validatorSlashes: (validatorAddress: string, startingHeight: number, endingHeight: number, paginationKey?: Uint8Array) => Promise;
+ };
+}
+export declare function setupDistributionExtension(base: QueryClient): DistributionExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js
new file mode 100644
index 00000000..fa10e207
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js
@@ -0,0 +1,76 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupDistributionExtension = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const query_1 = require("cosmjs-types/cosmos/distribution/v1beta1/query");
+const long_1 = __importDefault(require("long"));
+const queryclient_1 = require("../../queryclient");
+function setupDistributionExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ distribution: {
+ communityPool: async () => {
+ const response = await queryService.CommunityPool({});
+ return response;
+ },
+ delegationRewards: async (delegatorAddress, validatorAddress) => {
+ const response = await queryService.DelegationRewards({
+ delegatorAddress: delegatorAddress,
+ validatorAddress: validatorAddress,
+ });
+ return response;
+ },
+ delegationTotalRewards: async (delegatorAddress) => {
+ const response = await queryService.DelegationTotalRewards({
+ delegatorAddress: delegatorAddress,
+ });
+ return response;
+ },
+ delegatorValidators: async (delegatorAddress) => {
+ const response = await queryService.DelegatorValidators({
+ delegatorAddress: delegatorAddress,
+ });
+ return response;
+ },
+ delegatorWithdrawAddress: async (delegatorAddress) => {
+ const response = await queryService.DelegatorWithdrawAddress({
+ delegatorAddress: delegatorAddress,
+ });
+ return response;
+ },
+ params: async () => {
+ const response = await queryService.Params({});
+ return response;
+ },
+ validatorCommission: async (validatorAddress) => {
+ const response = await queryService.ValidatorCommission({
+ validatorAddress: validatorAddress,
+ });
+ return response;
+ },
+ validatorOutstandingRewards: async (validatorAddress) => {
+ const response = await queryService.ValidatorOutstandingRewards({
+ validatorAddress: validatorAddress,
+ });
+ return response;
+ },
+ validatorSlashes: async (validatorAddress, startingHeight, endingHeight, paginationKey) => {
+ const response = await queryService.ValidatorSlashes({
+ validatorAddress: validatorAddress,
+ startingHeight: long_1.default.fromNumber(startingHeight, true),
+ endingHeight: long_1.default.fromNumber(endingHeight, true),
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ },
+ };
+}
+exports.setupDistributionExtension = setupDistributionExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js.map
new file mode 100644
index 00000000..2d1c1bf5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/distribution/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/distribution/queries.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAyD;AACzD,0EAWwD;AACxD,gDAAwB;AAExB,mDAA2F;AA0B3F,SAAgB,0BAA0B,CAAC,IAAiB;IAC1D,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,YAAY,EAAE;YACZ,aAAa,EAAE,KAAK,IAAI,EAAE;gBACxB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,iBAAiB,EAAE,KAAK,EAAE,gBAAwB,EAAE,gBAAwB,EAAE,EAAE;gBAC9E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC;oBACpD,gBAAgB,EAAE,gBAAgB;oBAClC,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,sBAAsB,EAAE,KAAK,EAAE,gBAAwB,EAAE,EAAE;gBACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC;oBACzD,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,mBAAmB,EAAE,KAAK,EAAE,gBAAwB,EAAE,EAAE;gBACtD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;oBACtD,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,wBAAwB,EAAE,KAAK,EAAE,gBAAwB,EAAE,EAAE;gBAC3D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,wBAAwB,CAAC;oBAC3D,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/C,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,mBAAmB,EAAE,KAAK,EAAE,gBAAwB,EAAE,EAAE;gBACtD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;oBACtD,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,2BAA2B,EAAE,KAAK,EAAE,gBAAwB,EAAE,EAAE;gBAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,2BAA2B,CAAC;oBAC9D,gBAAgB,EAAE,gBAAgB;iBACnC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,gBAAgB,EAAE,KAAK,EACrB,gBAAwB,EACxB,cAAsB,EACtB,YAAoB,EACpB,aAA0B,EAC1B,EAAE;gBACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;oBACnD,gBAAgB,EAAE,gBAAgB;oBAClC,cAAc,EAAE,cAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC;oBACrD,YAAY,EAAE,cAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC;oBACjD,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AArED,gEAqEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.d.ts
new file mode 100644
index 00000000..b8b85976
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.d.ts
@@ -0,0 +1,18 @@
+import { AminoMsg } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+interface Any {
+ readonly type_url: string;
+ readonly value: Uint8Array;
+}
+/** Supports submitting arbitrary evidence */
+export interface AminoMsgSubmitEvidence extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgSubmitEvidence";
+ readonly value: {
+ /** Bech32 account address */
+ readonly submitter: string;
+ readonly evidence: Any;
+ };
+}
+export declare function isAminoMsgSubmitEvidence(msg: AminoMsg): msg is AminoMsgSubmitEvidence;
+export declare function createEvidenceAminoConverters(): AminoConverters;
+export {};
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js
new file mode 100644
index 00000000..9795f596
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createEvidenceAminoConverters = exports.isAminoMsgSubmitEvidence = void 0;
+function isAminoMsgSubmitEvidence(msg) {
+ return msg.type === "cosmos-sdk/MsgSubmitEvidence";
+}
+exports.isAminoMsgSubmitEvidence = isAminoMsgSubmitEvidence;
+function createEvidenceAminoConverters() {
+ throw new Error("Not implemented");
+}
+exports.createEvidenceAminoConverters = createEvidenceAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js.map
new file mode 100644
index 00000000..a9a43897
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/evidence/aminomessages.ts"],"names":[],"mappings":";;;AAsBA,SAAgB,wBAAwB,CAAC,GAAa;IACpD,OAAO,GAAG,CAAC,IAAI,KAAK,8BAA8B,CAAC;AACrD,CAAC;AAFD,4DAEC;AAED,SAAgB,6BAA6B;IAC3C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAFD,sEAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.d.ts
new file mode 100644
index 00000000..577ae959
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.d.ts
@@ -0,0 +1,2 @@
+import { AminoConverters } from "../../aminotypes";
+export declare function createFeegrantAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js
new file mode 100644
index 00000000..a2207015
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createFeegrantAminoConverters = void 0;
+function createFeegrantAminoConverters() {
+ return {
+ // For Cosmos SDK < 0.46 the Amino JSON codec was broken on chain and thus inaccessible.
+ // Now this can be implemented for 0.46+ chains, see
+ // https://github.com/cosmos/cosmjs/issues/1092
+ //
+ // "/cosmos.feegrant.v1beta1.MsgGrantAllowance": IMPLEMENT_ME,
+ // "/cosmos.feegrant.v1beta1.MsgRevokeAllowance": IMPLEMENT_ME,
+ };
+}
+exports.createFeegrantAminoConverters = createFeegrantAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js.map
new file mode 100644
index 00000000..ae023ab2
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/feegrant/aminomessages.ts"],"names":[],"mappings":";;;AAEA,SAAgB,6BAA6B;IAC3C,OAAO;IACL,wFAAwF;IACxF,oDAAoD;IACpD,+CAA+C;IAC/C,EAAE;IACF,8DAA8D;IAC9D,+DAA+D;KAChE,CAAC;AACJ,CAAC;AATD,sEASC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.d.ts
new file mode 100644
index 00000000..86c8e773
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.d.ts
@@ -0,0 +1,2 @@
+import { GeneratedType } from "@cosmjs/proto-signing";
+export declare const feegrantTypes: ReadonlyArray<[string, GeneratedType]>;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js
new file mode 100644
index 00000000..4736dc04
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.feegrantTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/feegrant/v1beta1/tx");
+exports.feegrantTypes = [
+ ["/cosmos.feegrant.v1beta1.MsgGrantAllowance", tx_1.MsgGrantAllowance],
+ ["/cosmos.feegrant.v1beta1.MsgRevokeAllowance", tx_1.MsgRevokeAllowance],
+];
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js.map
new file mode 100644
index 00000000..1eeb3851
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/feegrant/messages.ts"],"names":[],"mappings":";;;AACA,gEAAgG;AAEnF,QAAA,aAAa,GAA2C;IACnE,CAAC,4CAA4C,EAAE,sBAAiB,CAAC;IACjE,CAAC,6CAA6C,EAAE,uBAAkB,CAAC;CACpE,CAAC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.d.ts
new file mode 100644
index 00000000..feb2994b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.d.ts
@@ -0,0 +1,9 @@
+import { QueryAllowanceResponse, QueryAllowancesResponse } from "cosmjs-types/cosmos/feegrant/v1beta1/query";
+import { QueryClient } from "../../queryclient";
+export interface FeegrantExtension {
+ readonly feegrant: {
+ readonly allowance: (granter: string, grantee: string) => Promise;
+ readonly allowances: (grantee: string, paginationKey?: Uint8Array) => Promise;
+ };
+}
+export declare function setupFeegrantExtension(base: QueryClient): FeegrantExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js
new file mode 100644
index 00000000..a6664484
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupFeegrantExtension = void 0;
+const query_1 = require("cosmjs-types/cosmos/feegrant/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupFeegrantExtension(base) {
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ feegrant: {
+ allowance: async (granter, grantee) => {
+ const response = await queryService.Allowance({
+ granter: granter,
+ grantee: grantee,
+ });
+ return response;
+ },
+ allowances: async (grantee, paginationKey) => {
+ const response = await queryService.Allowances({
+ grantee: grantee,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ },
+ };
+}
+exports.setupFeegrantExtension = setupFeegrantExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js.map
new file mode 100644
index 00000000..e0aac038
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/feegrant/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/feegrant/queries.ts"],"names":[],"mappings":";;;AAAA,sEAIoD;AAEpD,mDAA2F;AAS3F,SAAgB,sBAAsB,CAAC,IAAiB;IACtD,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE;YACR,SAAS,EAAE,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;gBACpD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC;oBAC5C,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,UAAU,EAAE,KAAK,EAAE,OAAe,EAAE,aAA0B,EAAE,EAAE;gBAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC;oBAC7C,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAxBD,wDAwBC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.d.ts
new file mode 100644
index 00000000..285b688a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.d.ts
@@ -0,0 +1,79 @@
+import { AminoMsg, Coin } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+/** Supports submitting arbitrary proposal content. */
+export interface AminoMsgSubmitProposal extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgSubmitProposal";
+ readonly value: {
+ /**
+ * A proposal structure, e.g.
+ *
+ * ```
+ * {
+ * type: 'cosmos-sdk/TextProposal',
+ * value: {
+ * description: 'This proposal proposes to test whether this proposal passes',
+ * title: 'Test Proposal'
+ * }
+ * }
+ * ```
+ */
+ readonly content: {
+ readonly type: string;
+ readonly value: any;
+ };
+ readonly initial_deposit: readonly Coin[];
+ /** Bech32 account address */
+ readonly proposer: string;
+ };
+}
+export declare function isAminoMsgSubmitProposal(msg: AminoMsg): msg is AminoMsgSubmitProposal;
+/** Casts a vote */
+export interface AminoMsgVote extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgVote";
+ readonly value: {
+ readonly proposal_id: string;
+ /** Bech32 account address */
+ readonly voter: string;
+ /**
+ * VoteOption as integer from 0 to 4 🤷
+ *
+ * @see https://github.com/cosmos/cosmos-sdk/blob/v0.42.9/x/gov/types/gov.pb.go#L38-L49
+ */
+ readonly option: number;
+ };
+}
+export declare function isAminoMsgVote(msg: AminoMsg): msg is AminoMsgVote;
+/**
+ * @see https://github.com/cosmos/cosmos-sdk/blob/v0.44.5/x/gov/types/tx.pb.go#L196-L203
+ * @see https://github.com/cosmos/cosmos-sdk/blob/v0.44.5/x/gov/types/gov.pb.go#L124-L130
+ */
+export interface AminoMsgVoteWeighted extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgVoteWeighted";
+ readonly value: {
+ readonly proposal_id: string;
+ /** Bech32 account address */
+ readonly voter: string;
+ readonly options: Array<{
+ /**
+ * VoteOption as integer from 0 to 4 🤷
+ *
+ * @see https://github.com/cosmos/cosmos-sdk/blob/v0.44.5/x/gov/types/gov.pb.go#L35-L49
+ */
+ readonly option: number;
+ readonly weight: string;
+ }>;
+ };
+}
+export declare function isAminoMsgVoteWeighted(msg: AminoMsg): msg is AminoMsgVoteWeighted;
+/** Submits a deposit to an existing proposal */
+export interface AminoMsgDeposit extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgDeposit";
+ readonly value: {
+ readonly proposal_id: string;
+ /** Bech32 account address */
+ readonly depositor: string;
+ readonly amount: readonly Coin[];
+ };
+}
+export declare function isAminoMsgDeposit(msg: AminoMsg): msg is AminoMsgDeposit;
+export declare function createGovAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js
new file mode 100644
index 00000000..a4701a5f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js
@@ -0,0 +1,149 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createGovAminoConverters = exports.isAminoMsgDeposit = exports.isAminoMsgVoteWeighted = exports.isAminoMsgVote = exports.isAminoMsgSubmitProposal = void 0;
+const math_1 = require("@cosmjs/math");
+const utils_1 = require("@cosmjs/utils");
+const gov_1 = require("cosmjs-types/cosmos/gov/v1beta1/gov");
+const any_1 = require("cosmjs-types/google/protobuf/any");
+const long_1 = __importDefault(require("long"));
+const queryclient_1 = require("../../queryclient");
+function isAminoMsgSubmitProposal(msg) {
+ return msg.type === "cosmos-sdk/MsgSubmitProposal";
+}
+exports.isAminoMsgSubmitProposal = isAminoMsgSubmitProposal;
+function isAminoMsgVote(msg) {
+ return msg.type === "cosmos-sdk/MsgVote";
+}
+exports.isAminoMsgVote = isAminoMsgVote;
+function isAminoMsgVoteWeighted(msg) {
+ return msg.type === "cosmos-sdk/MsgVoteWeighted";
+}
+exports.isAminoMsgVoteWeighted = isAminoMsgVoteWeighted;
+function isAminoMsgDeposit(msg) {
+ return msg.type === "cosmos-sdk/MsgDeposit";
+}
+exports.isAminoMsgDeposit = isAminoMsgDeposit;
+function createGovAminoConverters() {
+ // Gov v1 types missing, see
+ // https://github.com/cosmos/cosmjs/issues/1442
+ return {
+ "/cosmos.gov.v1beta1.MsgDeposit": {
+ aminoType: "cosmos-sdk/MsgDeposit",
+ toAmino: ({ amount, depositor, proposalId }) => {
+ return {
+ amount,
+ depositor,
+ proposal_id: proposalId.toString(),
+ };
+ },
+ fromAmino: ({ amount, depositor, proposal_id }) => {
+ return {
+ amount: Array.from(amount),
+ depositor,
+ proposalId: long_1.default.fromString(proposal_id),
+ };
+ },
+ },
+ "/cosmos.gov.v1beta1.MsgVote": {
+ aminoType: "cosmos-sdk/MsgVote",
+ toAmino: ({ option, proposalId, voter }) => {
+ return {
+ option: option,
+ proposal_id: proposalId.toString(),
+ voter: voter,
+ };
+ },
+ fromAmino: ({ option, proposal_id, voter }) => {
+ return {
+ option: (0, gov_1.voteOptionFromJSON)(option),
+ proposalId: long_1.default.fromString(proposal_id),
+ voter: voter,
+ };
+ },
+ },
+ "/cosmos.gov.v1beta1.MsgVoteWeighted": {
+ aminoType: "cosmos-sdk/MsgVoteWeighted",
+ toAmino: ({ options, proposalId, voter }) => {
+ return {
+ options: options.map((o) => ({
+ option: o.option,
+ // Weight is between 0 and 1, so we always have 20 characters when printing all trailing
+ // zeros (e.g. "0.700000000000000000" or "1.000000000000000000")
+ weight: (0, queryclient_1.decodeCosmosSdkDecFromProto)(o.weight).toString().padEnd(20, "0"),
+ })),
+ proposal_id: proposalId.toString(),
+ voter: voter,
+ };
+ },
+ fromAmino: ({ options, proposal_id, voter }) => {
+ return {
+ proposalId: long_1.default.fromString(proposal_id),
+ voter: voter,
+ options: options.map((o) => ({
+ option: (0, gov_1.voteOptionFromJSON)(o.option),
+ weight: math_1.Decimal.fromUserInput(o.weight, 18).atomics,
+ })),
+ };
+ },
+ },
+ "/cosmos.gov.v1beta1.MsgSubmitProposal": {
+ aminoType: "cosmos-sdk/MsgSubmitProposal",
+ toAmino: ({ initialDeposit, proposer, content, }) => {
+ (0, utils_1.assertDefinedAndNotNull)(content);
+ let proposal;
+ switch (content.typeUrl) {
+ case "/cosmos.gov.v1beta1.TextProposal": {
+ const textProposal = gov_1.TextProposal.decode(content.value);
+ proposal = {
+ type: "cosmos-sdk/TextProposal",
+ value: {
+ description: textProposal.description,
+ title: textProposal.title,
+ },
+ };
+ break;
+ }
+ default:
+ throw new Error(`Unsupported proposal type: '${content.typeUrl}'`);
+ }
+ return {
+ initial_deposit: initialDeposit,
+ proposer: proposer,
+ content: proposal,
+ };
+ },
+ fromAmino: ({ initial_deposit, proposer, content, }) => {
+ let any_content;
+ switch (content.type) {
+ case "cosmos-sdk/TextProposal": {
+ const { value } = content;
+ (0, utils_1.assert)((0, utils_1.isNonNullObject)(value));
+ const { title, description } = value;
+ (0, utils_1.assert)(typeof title === "string");
+ (0, utils_1.assert)(typeof description === "string");
+ any_content = any_1.Any.fromPartial({
+ typeUrl: "/cosmos.gov.v1beta1.TextProposal",
+ value: gov_1.TextProposal.encode(gov_1.TextProposal.fromPartial({
+ title: title,
+ description: description,
+ })).finish(),
+ });
+ break;
+ }
+ default:
+ throw new Error(`Unsupported proposal type: '${content.type}'`);
+ }
+ return {
+ initialDeposit: Array.from(initial_deposit),
+ proposer: proposer,
+ content: any_content,
+ };
+ },
+ },
+ };
+}
+exports.createGovAminoConverters = createGovAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js.map
new file mode 100644
index 00000000..a8831676
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/gov/aminomessages.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.d.ts
new file mode 100644
index 00000000..1df985de
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.d.ts
@@ -0,0 +1,23 @@
+import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing";
+import { MsgDeposit, MsgSubmitProposal, MsgVote, MsgVoteWeighted } from "cosmjs-types/cosmos/gov/v1beta1/tx";
+export declare const govTypes: ReadonlyArray<[string, GeneratedType]>;
+export interface MsgDepositEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.gov.v1beta1.MsgDeposit";
+ readonly value: Partial;
+}
+export declare function isMsgDepositEncodeObject(object: EncodeObject): object is MsgSubmitProposalEncodeObject;
+export interface MsgSubmitProposalEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.gov.v1beta1.MsgSubmitProposal";
+ readonly value: Partial;
+}
+export declare function isMsgSubmitProposalEncodeObject(object: EncodeObject): object is MsgSubmitProposalEncodeObject;
+export interface MsgVoteEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.gov.v1beta1.MsgVote";
+ readonly value: Partial;
+}
+export declare function isMsgVoteEncodeObject(object: EncodeObject): object is MsgVoteEncodeObject;
+export interface MsgVoteWeightedEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.gov.v1beta1.MsgVoteWeighted";
+ readonly value: Partial;
+}
+export declare function isMsgVoteWeightedEncodeObject(object: EncodeObject): object is MsgVoteWeightedEncodeObject;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js
new file mode 100644
index 00000000..546f1d0e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js
@@ -0,0 +1,33 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMsgVoteWeightedEncodeObject = exports.isMsgVoteEncodeObject = exports.isMsgSubmitProposalEncodeObject = exports.isMsgDepositEncodeObject = exports.govTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/gov/v1/tx");
+const tx_2 = require("cosmjs-types/cosmos/gov/v1beta1/tx");
+exports.govTypes = [
+ ["/cosmos.gov.v1.MsgDeposit", tx_1.MsgDeposit],
+ ["/cosmos.gov.v1.MsgSubmitProposal", tx_1.MsgSubmitProposal],
+ ["/cosmos.gov.v1.MsgUpdateParams", tx_1.MsgUpdateParams],
+ ["/cosmos.gov.v1.MsgVote", tx_1.MsgVote],
+ ["/cosmos.gov.v1.MsgVoteWeighted", tx_1.MsgVoteWeighted],
+ ["/cosmos.gov.v1beta1.MsgDeposit", tx_2.MsgDeposit],
+ ["/cosmos.gov.v1beta1.MsgSubmitProposal", tx_2.MsgSubmitProposal],
+ ["/cosmos.gov.v1beta1.MsgVote", tx_2.MsgVote],
+ ["/cosmos.gov.v1beta1.MsgVoteWeighted", tx_2.MsgVoteWeighted],
+];
+function isMsgDepositEncodeObject(object) {
+ return object.typeUrl === "/cosmos.gov.v1beta1.MsgDeposit";
+}
+exports.isMsgDepositEncodeObject = isMsgDepositEncodeObject;
+function isMsgSubmitProposalEncodeObject(object) {
+ return object.typeUrl === "/cosmos.gov.v1beta1.MsgSubmitProposal";
+}
+exports.isMsgSubmitProposalEncodeObject = isMsgSubmitProposalEncodeObject;
+function isMsgVoteEncodeObject(object) {
+ return object.typeUrl === "/cosmos.gov.v1beta1.MsgVote";
+}
+exports.isMsgVoteEncodeObject = isMsgVoteEncodeObject;
+function isMsgVoteWeightedEncodeObject(object) {
+ return object.typeUrl === "/cosmos.gov.v1beta1.MsgVoteWeighted";
+}
+exports.isMsgVoteWeightedEncodeObject = isMsgVoteWeightedEncodeObject;
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js.map
new file mode 100644
index 00000000..efe9c93c
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/gov/messages.ts"],"names":[],"mappings":";;;AACA,sDAMuC;AACvC,2DAA6G;AAEhG,QAAA,QAAQ,GAA2C;IAC9D,CAAC,2BAA2B,EAAE,eAAY,CAAC;IAC3C,CAAC,kCAAkC,EAAE,sBAAmB,CAAC;IACzD,CAAC,gCAAgC,EAAE,oBAAiB,CAAC;IACrD,CAAC,wBAAwB,EAAE,YAAS,CAAC;IACrC,CAAC,gCAAgC,EAAE,oBAAiB,CAAC;IAErD,CAAC,gCAAgC,EAAE,eAAU,CAAC;IAC9C,CAAC,uCAAuC,EAAE,sBAAiB,CAAC;IAC5D,CAAC,6BAA6B,EAAE,YAAO,CAAC;IACxC,CAAC,qCAAqC,EAAE,oBAAe,CAAC;CACzD,CAAC;AAgBF,SAAgB,wBAAwB,CAAC,MAAoB;IAC3D,OAAQ,MAAiC,CAAC,OAAO,KAAK,gCAAgC,CAAC;AACzF,CAAC;AAFD,4DAEC;AAOD,SAAgB,+BAA+B,CAC7C,MAAoB;IAEpB,OAAQ,MAAwC,CAAC,OAAO,KAAK,uCAAuC,CAAC;AACvG,CAAC;AAJD,0EAIC;AAOD,SAAgB,qBAAqB,CAAC,MAAoB;IACxD,OAAQ,MAA8B,CAAC,OAAO,KAAK,6BAA6B,CAAC;AACnF,CAAC;AAFD,sDAEC;AAOD,SAAgB,6BAA6B,CAAC,MAAoB;IAChE,OAAQ,MAAsC,CAAC,OAAO,KAAK,qCAAqC,CAAC;AACnG,CAAC;AAFD,sEAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.d.ts
new file mode 100644
index 00000000..98a8f149
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.d.ts
@@ -0,0 +1,20 @@
+import { Uint64 } from "@cosmjs/math";
+import { ProposalStatus } from "cosmjs-types/cosmos/gov/v1beta1/gov";
+import { QueryDepositResponse, QueryDepositsResponse, QueryParamsResponse, QueryProposalResponse, QueryProposalsResponse, QueryTallyResultResponse, QueryVoteResponse, QueryVotesResponse } from "cosmjs-types/cosmos/gov/v1beta1/query";
+import Long from "long";
+import { QueryClient } from "../../queryclient";
+export type GovParamsType = "deposit" | "tallying" | "voting";
+export type GovProposalId = string | number | Long | Uint64;
+export interface GovExtension {
+ readonly gov: {
+ readonly params: (parametersType: GovParamsType) => Promise;
+ readonly proposals: (proposalStatus: ProposalStatus, depositor: string, voter: string, paginationKey?: Uint8Array) => Promise;
+ readonly proposal: (proposalId: GovProposalId) => Promise;
+ readonly deposits: (proposalId: GovProposalId, paginationKey?: Uint8Array) => Promise;
+ readonly deposit: (proposalId: GovProposalId, depositorAddress: string) => Promise;
+ readonly tally: (proposalId: GovProposalId) => Promise;
+ readonly votes: (proposalId: GovProposalId, paginationKey?: Uint8Array) => Promise;
+ readonly vote: (proposalId: GovProposalId, voterAddress: string) => Promise;
+ };
+}
+export declare function setupGovExtension(base: QueryClient): GovExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js
new file mode 100644
index 00000000..7368eb37
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js
@@ -0,0 +1,68 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupGovExtension = void 0;
+const query_1 = require("cosmjs-types/cosmos/gov/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupGovExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ gov: {
+ params: async (parametersType) => {
+ const response = await queryService.Params({ paramsType: parametersType });
+ return response;
+ },
+ proposals: async (proposalStatus, depositorAddress, voterAddress, paginationKey) => {
+ const response = await queryService.Proposals({
+ proposalStatus,
+ depositor: depositorAddress,
+ voter: voterAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ proposal: async (proposalId) => {
+ const response = await queryService.Proposal({ proposalId: (0, queryclient_1.longify)(proposalId) });
+ return response;
+ },
+ deposits: async (proposalId, paginationKey) => {
+ const response = await queryService.Deposits({
+ proposalId: (0, queryclient_1.longify)(proposalId),
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ deposit: async (proposalId, depositorAddress) => {
+ const response = await queryService.Deposit({
+ proposalId: (0, queryclient_1.longify)(proposalId),
+ depositor: depositorAddress,
+ });
+ return response;
+ },
+ tally: async (proposalId) => {
+ const response = await queryService.TallyResult({
+ proposalId: (0, queryclient_1.longify)(proposalId),
+ });
+ return response;
+ },
+ votes: async (proposalId, paginationKey) => {
+ const response = await queryService.Votes({
+ proposalId: (0, queryclient_1.longify)(proposalId),
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ vote: async (proposalId, voterAddress) => {
+ const response = await queryService.Vote({
+ proposalId: (0, queryclient_1.longify)(proposalId),
+ voter: voterAddress,
+ });
+ return response;
+ },
+ },
+ };
+}
+exports.setupGovExtension = setupGovExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js.map
new file mode 100644
index 00000000..f37fbdf4
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/gov/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/gov/queries.ts"],"names":[],"mappings":";;;AAEA,iEAU+C;AAG/C,mDAAoG;AA2BpG,SAAgB,iBAAiB,CAAC,IAAiB;IACjD,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAE1C,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,GAAG,EAAE;YACH,MAAM,EAAE,KAAK,EAAE,cAA6B,EAAE,EAAE;gBAC9C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC3E,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,SAAS,EAAE,KAAK,EACd,cAA8B,EAC9B,gBAAwB,EACxB,YAAoB,EACpB,aAA0B,EAC1B,EAAE;gBACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC;oBAC5C,cAAc;oBACd,SAAS,EAAE,gBAAgB;oBAC3B,KAAK,EAAE,YAAY;oBACnB,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,UAAyB,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAClF,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,UAAyB,EAAE,aAA0B,EAAE,EAAE;gBACxE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC;oBAC3C,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC;oBAC/B,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,UAAyB,EAAE,gBAAwB,EAAE,EAAE;gBACrE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;oBAC1C,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC;oBAC/B,SAAS,EAAE,gBAAgB;iBAC5B,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,UAAyB,EAAE,EAAE;gBACzC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;oBAC9C,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC;iBAChC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,EAAE,KAAK,EAAE,UAAyB,EAAE,aAA0B,EAAE,EAAE;gBACrE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;oBACxC,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC;oBAC/B,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAyB,EAAE,YAAoB,EAAE,EAAE;gBAC9D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;oBACvC,UAAU,EAAE,IAAA,qBAAO,EAAC,UAAU,CAAC;oBAC/B,KAAK,EAAE,YAAY;iBACpB,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAnED,8CAmEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.d.ts
new file mode 100644
index 00000000..8175eeba
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.d.ts
@@ -0,0 +1,2 @@
+import { AminoConverters } from "../../aminotypes";
+export declare function createGroupAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js
new file mode 100644
index 00000000..c21df374
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createGroupAminoConverters = void 0;
+function createGroupAminoConverters() {
+ // Missing, see https://github.com/cosmos/cosmjs/issues/1441
+ return {};
+}
+exports.createGroupAminoConverters = createGroupAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js.map
new file mode 100644
index 00000000..d5076417
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/group/aminomessages.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B;IACxC,4DAA4D;IAC5D,OAAO,EAAE,CAAC;AACZ,CAAC;AAHD,gEAGC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.d.ts
new file mode 100644
index 00000000..c3ad5b6f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.d.ts
@@ -0,0 +1,2 @@
+import { GeneratedType } from "@cosmjs/proto-signing";
+export declare const groupTypes: ReadonlyArray<[string, GeneratedType]>;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js
new file mode 100644
index 00000000..9ec9aa10
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.groupTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/group/v1/tx");
+exports.groupTypes = [
+ ["/cosmos.group.v1.MsgCreateGroup", tx_1.MsgCreateGroup],
+ ["/cosmos.group.v1.MsgCreateGroupPolicy", tx_1.MsgCreateGroupPolicy],
+ ["/cosmos.group.v1.MsgCreateGroupWithPolicy", tx_1.MsgCreateGroupWithPolicy],
+ ["/cosmos.group.v1.MsgExec", tx_1.MsgExec],
+ ["/cosmos.group.v1.MsgLeaveGroup", tx_1.MsgLeaveGroup],
+ ["/cosmos.group.v1.MsgSubmitProposal", tx_1.MsgSubmitProposal],
+ ["/cosmos.group.v1.MsgUpdateGroupAdmin", tx_1.MsgUpdateGroupAdmin],
+ ["/cosmos.group.v1.MsgUpdateGroupMembers", tx_1.MsgUpdateGroupMembers],
+ ["/cosmos.group.v1.MsgUpdateGroupMetadata", tx_1.MsgUpdateGroupMetadata],
+ ["/cosmos.group.v1.MsgUpdateGroupPolicyAdmin", tx_1.MsgUpdateGroupPolicyAdmin],
+ ["/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy", tx_1.MsgUpdateGroupPolicyDecisionPolicy],
+ ["/cosmos.group.v1.MsgUpdateGroupPolicyMetadata", tx_1.MsgUpdateGroupPolicyMetadata],
+ ["/cosmos.group.v1.MsgVote", tx_1.MsgVote],
+ ["/cosmos.group.v1.MsgWithdrawProposal", tx_1.MsgWithdrawProposal],
+];
+// There are no EncodeObject implementations for the new v1 message types because
+// those things don't scale (https://github.com/cosmos/cosmjs/issues/1440). We need to
+// address this more fundamentally. Users can use
+// const msg = {
+// typeUrl: "/cosmos.group.v1.MsgCreateGroup",
+// value: MsgCreateGroup.fromPartial({ ... })
+// }
+// in their app.
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js.map
new file mode 100644
index 00000000..6dd658ed
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/group/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/group/messages.ts"],"names":[],"mappings":";;;AACA,wDAeyC;AAE5B,QAAA,UAAU,GAA2C;IAChE,CAAC,iCAAiC,EAAE,mBAAc,CAAC;IACnD,CAAC,uCAAuC,EAAE,yBAAoB,CAAC;IAC/D,CAAC,2CAA2C,EAAE,6BAAwB,CAAC;IACvE,CAAC,0BAA0B,EAAE,YAAO,CAAC;IACrC,CAAC,gCAAgC,EAAE,kBAAa,CAAC;IACjD,CAAC,oCAAoC,EAAE,sBAAiB,CAAC;IACzD,CAAC,sCAAsC,EAAE,wBAAmB,CAAC;IAC7D,CAAC,wCAAwC,EAAE,0BAAqB,CAAC;IACjE,CAAC,yCAAyC,EAAE,2BAAsB,CAAC;IACnE,CAAC,4CAA4C,EAAE,8BAAyB,CAAC;IACzE,CAAC,qDAAqD,EAAE,uCAAkC,CAAC;IAC3F,CAAC,+CAA+C,EAAE,iCAA4B,CAAC;IAC/E,CAAC,0BAA0B,EAAE,YAAO,CAAC;IACrC,CAAC,sCAAsC,EAAE,wBAAmB,CAAC;CAC9D,CAAC;AAEF,iFAAiF;AACjF,sFAAsF;AACtF,iDAAiD;AACjD,gBAAgB;AAChB,gDAAgD;AAChD,+CAA+C;AAC/C,IAAI;AACJ,gBAAgB"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.d.ts
new file mode 100644
index 00000000..55d6066f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.d.ts
@@ -0,0 +1,37 @@
+import { AminoMsg, Coin } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+interface AminoHeight {
+ /** 0 values must be omitted (https://github.com/cosmos/cosmos-sdk/blob/v0.42.7/x/ibc/core/02-client/types/client.pb.go#L252). */
+ readonly revision_number?: string;
+ /** 0 values must be omitted (https://github.com/cosmos/cosmos-sdk/blob/v0.42.7/x/ibc/core/02-client/types/client.pb.go#L254). */
+ readonly revision_height?: string;
+}
+/** Transfers fungible tokens (i.e Coins) between ICS20 enabled chains */
+export interface AminoMsgTransfer extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgTransfer";
+ readonly value: {
+ readonly source_port: string;
+ readonly source_channel: string;
+ readonly token?: Coin;
+ /** Bech32 account address */
+ readonly sender: string;
+ /** Bech32 account address */
+ readonly receiver: string;
+ /**
+ * The timeout as a (revision_number, revision_height) pair.
+ *
+ * This fied is is non-optional (https://github.com/cosmos/cosmos-sdk/blob/v0.42.7/x/ibc/applications/transfer/types/tx.pb.go#L49).
+ * In order to not set the timeout height, set it to {}.
+ */
+ readonly timeout_height: AminoHeight;
+ /**
+ * Timeout timestamp in nanoseconds since Unix epoch. The timeout is disabled when set to 0.
+ *
+ * 0 values must be omitted (https://github.com/cosmos/cosmos-sdk/blob/v0.42.7/x/ibc/applications/transfer/types/tx.pb.go#L52).
+ */
+ readonly timeout_timestamp?: string;
+ };
+}
+export declare function isAminoMsgTransfer(msg: AminoMsg): msg is AminoMsgTransfer;
+export declare function createIbcAminoConverters(): AminoConverters;
+export {};
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js
new file mode 100644
index 00000000..06536254
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js
@@ -0,0 +1,61 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createIbcAminoConverters = exports.isAminoMsgTransfer = void 0;
+const tx_1 = require("cosmjs-types/ibc/applications/transfer/v1/tx");
+const long_1 = __importDefault(require("long"));
+function isAminoMsgTransfer(msg) {
+ return msg.type === "cosmos-sdk/MsgTransfer";
+}
+exports.isAminoMsgTransfer = isAminoMsgTransfer;
+function omitDefault(input) {
+ if (typeof input === "string") {
+ return input === "" ? undefined : input;
+ }
+ if (typeof input === "number") {
+ return input === 0 ? undefined : input;
+ }
+ if (long_1.default.isLong(input)) {
+ return input.isZero() ? undefined : input;
+ }
+ throw new Error(`Got unsupported type '${typeof input}'`);
+}
+function createIbcAminoConverters() {
+ return {
+ "/ibc.applications.transfer.v1.MsgTransfer": {
+ aminoType: "cosmos-sdk/MsgTransfer",
+ toAmino: ({ sourcePort, sourceChannel, token, sender, receiver, timeoutHeight, timeoutTimestamp, }) => ({
+ source_port: sourcePort,
+ source_channel: sourceChannel,
+ token: token,
+ sender: sender,
+ receiver: receiver,
+ timeout_height: timeoutHeight
+ ? {
+ revision_height: omitDefault(timeoutHeight.revisionHeight)?.toString(),
+ revision_number: omitDefault(timeoutHeight.revisionNumber)?.toString(),
+ }
+ : {},
+ timeout_timestamp: omitDefault(timeoutTimestamp)?.toString(),
+ }),
+ fromAmino: ({ source_port, source_channel, token, sender, receiver, timeout_height, timeout_timestamp, }) => tx_1.MsgTransfer.fromPartial({
+ sourcePort: source_port,
+ sourceChannel: source_channel,
+ token: token,
+ sender: sender,
+ receiver: receiver,
+ timeoutHeight: timeout_height
+ ? {
+ revisionHeight: long_1.default.fromString(timeout_height.revision_height || "0", true),
+ revisionNumber: long_1.default.fromString(timeout_height.revision_number || "0", true),
+ }
+ : undefined,
+ timeoutTimestamp: long_1.default.fromString(timeout_timestamp || "0", true),
+ }),
+ },
+ };
+}
+exports.createIbcAminoConverters = createIbcAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js.map
new file mode 100644
index 00000000..344de48b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/ibc/aminomessages.ts"],"names":[],"mappings":";;;;;;AAEA,qEAA2E;AAC3E,gDAAwB;AAwCxB,SAAgB,kBAAkB,CAAC,GAAa;IAC9C,OAAO,GAAG,CAAC,IAAI,KAAK,wBAAwB,CAAC;AAC/C,CAAC;AAFD,gDAEC;AAED,SAAS,WAAW,CAAmC,KAAQ;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;KACzC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;KACxC;IAED,IAAI,cAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;KAC3C;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,KAAK,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,wBAAwB;IACtC,OAAO;QACL,2CAA2C,EAAE;YAC3C,SAAS,EAAE,wBAAwB;YACnC,OAAO,EAAE,CAAC,EACR,UAAU,EACV,aAAa,EACb,KAAK,EACL,MAAM,EACN,QAAQ,EACR,aAAa,EACb,gBAAgB,GACJ,EAA6B,EAAE,CAAC,CAAC;gBAC7C,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,aAAa;gBAC7B,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,cAAc,EAAE,aAAa;oBAC3B,CAAC,CAAC;wBACE,eAAe,EAAE,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE;wBACtE,eAAe,EAAE,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE;qBACvE;oBACH,CAAC,CAAC,EAAE;gBACN,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE;aAC7D,CAAC;YACF,SAAS,EAAE,CAAC,EACV,WAAW,EACX,cAAc,EACd,KAAK,EACL,MAAM,EACN,QAAQ,EACR,cAAc,EACd,iBAAiB,GACS,EAAe,EAAE,CAC3C,gBAAW,CAAC,WAAW,CAAC;gBACtB,UAAU,EAAE,WAAW;gBACvB,aAAa,EAAE,cAAc;gBAC7B,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,cAAc;oBAC3B,CAAC,CAAC;wBACE,cAAc,EAAE,cAAI,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,IAAI,GAAG,EAAE,IAAI,CAAC;wBAC5E,cAAc,EAAE,cAAI,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,IAAI,GAAG,EAAE,IAAI,CAAC;qBAC7E;oBACH,CAAC,CAAC,SAAS;gBACb,gBAAgB,EAAE,cAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,GAAG,EAAE,IAAI,CAAC;aAClE,CAAC;SACL;KACF,CAAC;AACJ,CAAC;AAnDD,4DAmDC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.d.ts
new file mode 100644
index 00000000..a86008fb
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.d.ts
@@ -0,0 +1,8 @@
+import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing";
+import { MsgTransfer } from "cosmjs-types/ibc/applications/transfer/v1/tx";
+export declare const ibcTypes: ReadonlyArray<[string, GeneratedType]>;
+export interface MsgTransferEncodeObject extends EncodeObject {
+ readonly typeUrl: "/ibc.applications.transfer.v1.MsgTransfer";
+ readonly value: Partial;
+}
+export declare function isMsgTransferEncodeObject(object: EncodeObject): object is MsgTransferEncodeObject;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js
new file mode 100644
index 00000000..c40dcdd8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js
@@ -0,0 +1,33 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMsgTransferEncodeObject = exports.ibcTypes = void 0;
+const tx_1 = require("cosmjs-types/ibc/applications/transfer/v1/tx");
+const tx_2 = require("cosmjs-types/ibc/core/channel/v1/tx");
+const tx_3 = require("cosmjs-types/ibc/core/client/v1/tx");
+const tx_4 = require("cosmjs-types/ibc/core/connection/v1/tx");
+exports.ibcTypes = [
+ ["/ibc.applications.transfer.v1.MsgTransfer", tx_1.MsgTransfer],
+ ["/ibc.core.channel.v1.MsgAcknowledgement", tx_2.MsgAcknowledgement],
+ ["/ibc.core.channel.v1.MsgChannelCloseConfirm", tx_2.MsgChannelCloseConfirm],
+ ["/ibc.core.channel.v1.MsgChannelCloseInit", tx_2.MsgChannelCloseInit],
+ ["/ibc.core.channel.v1.MsgChannelOpenAck", tx_2.MsgChannelOpenAck],
+ ["/ibc.core.channel.v1.MsgChannelOpenConfirm", tx_2.MsgChannelOpenConfirm],
+ ["/ibc.core.channel.v1.MsgChannelOpenInit", tx_2.MsgChannelOpenInit],
+ ["/ibc.core.channel.v1.MsgChannelOpenTry", tx_2.MsgChannelOpenTry],
+ ["/ibc.core.channel.v1.MsgRecvPacket", tx_2.MsgRecvPacket],
+ ["/ibc.core.channel.v1.MsgTimeout", tx_2.MsgTimeout],
+ ["/ibc.core.channel.v1.MsgTimeoutOnClose", tx_2.MsgTimeoutOnClose],
+ ["/ibc.core.client.v1.MsgCreateClient", tx_3.MsgCreateClient],
+ ["/ibc.core.client.v1.MsgSubmitMisbehaviour", tx_3.MsgSubmitMisbehaviour],
+ ["/ibc.core.client.v1.MsgUpdateClient", tx_3.MsgUpdateClient],
+ ["/ibc.core.client.v1.MsgUpgradeClient", tx_3.MsgUpgradeClient],
+ ["/ibc.core.connection.v1.MsgConnectionOpenAck", tx_4.MsgConnectionOpenAck],
+ ["/ibc.core.connection.v1.MsgConnectionOpenConfirm", tx_4.MsgConnectionOpenConfirm],
+ ["/ibc.core.connection.v1.MsgConnectionOpenInit", tx_4.MsgConnectionOpenInit],
+ ["/ibc.core.connection.v1.MsgConnectionOpenTry", tx_4.MsgConnectionOpenTry],
+];
+function isMsgTransferEncodeObject(object) {
+ return object.typeUrl === "/ibc.applications.transfer.v1.MsgTransfer";
+}
+exports.isMsgTransferEncodeObject = isMsgTransferEncodeObject;
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js.map
new file mode 100644
index 00000000..f031755a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/ibc/messages.ts"],"names":[],"mappings":";;;AACA,qEAA2E;AAC3E,4DAW6C;AAC7C,2DAK4C;AAC5C,+DAKgD;AAEnC,QAAA,QAAQ,GAA2C;IAC9D,CAAC,2CAA2C,EAAE,gBAAW,CAAC;IAC1D,CAAC,yCAAyC,EAAE,uBAAkB,CAAC;IAC/D,CAAC,6CAA6C,EAAE,2BAAsB,CAAC;IACvE,CAAC,0CAA0C,EAAE,wBAAmB,CAAC;IACjE,CAAC,wCAAwC,EAAE,sBAAiB,CAAC;IAC7D,CAAC,4CAA4C,EAAE,0BAAqB,CAAC;IACrE,CAAC,yCAAyC,EAAE,uBAAkB,CAAC;IAC/D,CAAC,wCAAwC,EAAE,sBAAiB,CAAC;IAC7D,CAAC,oCAAoC,EAAE,kBAAa,CAAC;IACrD,CAAC,iCAAiC,EAAE,eAAU,CAAC;IAC/C,CAAC,wCAAwC,EAAE,sBAAiB,CAAC;IAC7D,CAAC,qCAAqC,EAAE,oBAAe,CAAC;IACxD,CAAC,2CAA2C,EAAE,0BAAqB,CAAC;IACpE,CAAC,qCAAqC,EAAE,oBAAe,CAAC;IACxD,CAAC,sCAAsC,EAAE,qBAAgB,CAAC;IAC1D,CAAC,8CAA8C,EAAE,yBAAoB,CAAC;IACtE,CAAC,kDAAkD,EAAE,6BAAwB,CAAC;IAC9E,CAAC,+CAA+C,EAAE,0BAAqB,CAAC;IACxE,CAAC,8CAA8C,EAAE,yBAAoB,CAAC;CACvE,CAAC;AAOF,SAAgB,yBAAyB,CAAC,MAAoB;IAC5D,OAAQ,MAAkC,CAAC,OAAO,KAAK,2CAA2C,CAAC;AACrG,CAAC;AAFD,8DAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.d.ts
new file mode 100644
index 00000000..80e510c6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.d.ts
@@ -0,0 +1,67 @@
+import { QueryDenomTraceResponse, QueryDenomTracesResponse, QueryParamsResponse as QueryTransferParamsResponse } from "cosmjs-types/ibc/applications/transfer/v1/query";
+import { Channel } from "cosmjs-types/ibc/core/channel/v1/channel";
+import { QueryChannelClientStateResponse, QueryChannelConsensusStateResponse, QueryChannelResponse, QueryChannelsResponse, QueryConnectionChannelsResponse, QueryNextSequenceReceiveResponse, QueryPacketAcknowledgementResponse, QueryPacketAcknowledgementsResponse, QueryPacketCommitmentResponse, QueryPacketCommitmentsResponse, QueryPacketReceiptResponse, QueryUnreceivedAcksResponse, QueryUnreceivedPacketsResponse } from "cosmjs-types/ibc/core/channel/v1/query";
+import { Height } from "cosmjs-types/ibc/core/client/v1/client";
+import { QueryClientParamsResponse, QueryClientStateResponse, QueryClientStatesResponse, QueryConsensusStateResponse, QueryConsensusStatesResponse } from "cosmjs-types/ibc/core/client/v1/query";
+import { QueryClientConnectionsResponse, QueryConnectionClientStateResponse, QueryConnectionConsensusStateResponse, QueryConnectionResponse, QueryConnectionsResponse } from "cosmjs-types/ibc/core/connection/v1/query";
+import { ClientState as TendermintClientState, ConsensusState as TendermintConsensusState } from "cosmjs-types/ibc/lightclients/tendermint/v1/tendermint";
+import { QueryClient } from "../../queryclient";
+export interface IbcExtension {
+ readonly ibc: {
+ readonly channel: {
+ readonly channel: (portId: string, channelId: string) => Promise;
+ readonly channels: (paginationKey?: Uint8Array) => Promise;
+ readonly allChannels: () => Promise;
+ readonly connectionChannels: (connection: string, paginationKey?: Uint8Array) => Promise;
+ readonly allConnectionChannels: (connection: string) => Promise;
+ readonly clientState: (portId: string, channelId: string) => Promise;
+ readonly consensusState: (portId: string, channelId: string, revisionNumber: number, revisionHeight: number) => Promise;
+ readonly packetCommitment: (portId: string, channelId: string, sequence: number) => Promise;
+ readonly packetCommitments: (portId: string, channelId: string, paginationKey?: Uint8Array) => Promise;
+ readonly allPacketCommitments: (portId: string, channelId: string) => Promise;
+ readonly packetReceipt: (portId: string, channelId: string, sequence: number) => Promise;
+ readonly packetAcknowledgement: (portId: string, channelId: string, sequence: number) => Promise;
+ readonly packetAcknowledgements: (portId: string, channelId: string, paginationKey?: Uint8Array) => Promise;
+ readonly allPacketAcknowledgements: (portId: string, channelId: string) => Promise;
+ readonly unreceivedPackets: (portId: string, channelId: string, packetCommitmentSequences: readonly number[]) => Promise;
+ readonly unreceivedAcks: (portId: string, channelId: string, packetAckSequences: readonly number[]) => Promise;
+ readonly nextSequenceReceive: (portId: string, channelId: string) => Promise;
+ };
+ readonly client: {
+ readonly state: (clientId: string) => Promise;
+ readonly states: (paginationKey?: Uint8Array) => Promise;
+ readonly allStates: () => Promise;
+ readonly consensusState: (clientId: string, height?: number) => Promise;
+ readonly consensusStates: (clientId: string, paginationKey?: Uint8Array) => Promise;
+ readonly allConsensusStates: (clientId: string) => Promise;
+ readonly params: () => Promise;
+ readonly stateTm: (clientId: string) => Promise;
+ readonly statesTm: (paginationKey?: Uint8Array) => Promise;
+ readonly allStatesTm: () => Promise;
+ readonly consensusStateTm: (clientId: string, height?: Height) => Promise;
+ };
+ readonly connection: {
+ readonly connection: (connectionId: string) => Promise;
+ readonly connections: (paginationKey?: Uint8Array) => Promise;
+ readonly allConnections: () => Promise;
+ readonly clientConnections: (clientId: string) => Promise;
+ readonly clientState: (connectionId: string) => Promise;
+ readonly consensusState: (connectionId: string, revisionNumber: number, revisionHeight: number) => Promise;
+ };
+ readonly transfer: {
+ readonly denomTrace: (hash: string) => Promise;
+ readonly denomTraces: (paginationKey?: Uint8Array) => Promise;
+ readonly allDenomTraces: () => Promise;
+ readonly params: () => Promise;
+ };
+ readonly verified: {
+ readonly channel: {
+ readonly channel: (portId: string, channelId: string) => Promise;
+ readonly packetCommitment: (portId: string, channelId: string, sequence: number) => Promise;
+ readonly packetAcknowledgement: (portId: string, channelId: string, sequence: number) => Promise;
+ readonly nextSequenceReceive: (portId: string, channelId: string) => Promise;
+ };
+ };
+ };
+}
+export declare function setupIbcExtension(base: QueryClient): IbcExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js
new file mode 100644
index 00000000..42c7d575
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js
@@ -0,0 +1,348 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupIbcExtension = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const encoding_1 = require("@cosmjs/encoding");
+const math_1 = require("@cosmjs/math");
+const query_1 = require("cosmjs-types/ibc/applications/transfer/v1/query");
+const channel_1 = require("cosmjs-types/ibc/core/channel/v1/channel");
+const query_2 = require("cosmjs-types/ibc/core/channel/v1/query");
+const query_3 = require("cosmjs-types/ibc/core/client/v1/query");
+const query_4 = require("cosmjs-types/ibc/core/connection/v1/query");
+const tendermint_1 = require("cosmjs-types/ibc/lightclients/tendermint/v1/tendermint");
+const long_1 = __importDefault(require("long"));
+const queryclient_1 = require("../../queryclient");
+function decodeTendermintClientStateAny(clientState) {
+ if (clientState?.typeUrl !== "/ibc.lightclients.tendermint.v1.ClientState") {
+ throw new Error(`Unexpected client state type: ${clientState?.typeUrl}`);
+ }
+ return tendermint_1.ClientState.decode(clientState.value);
+}
+function decodeTendermintConsensusStateAny(clientState) {
+ if (clientState?.typeUrl !== "/ibc.lightclients.tendermint.v1.ConsensusState") {
+ throw new Error(`Unexpected client state type: ${clientState?.typeUrl}`);
+ }
+ return tendermint_1.ConsensusState.decode(clientState.value);
+}
+function setupIbcExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use these services to get easy typed access to query methods
+ // These cannot be used for proof verification
+ const channelQueryService = new query_2.QueryClientImpl(rpc);
+ const clientQueryService = new query_3.QueryClientImpl(rpc);
+ const connectionQueryService = new query_4.QueryClientImpl(rpc);
+ const transferQueryService = new query_1.QueryClientImpl(rpc);
+ return {
+ ibc: {
+ channel: {
+ channel: async (portId, channelId) => channelQueryService.Channel({
+ portId: portId,
+ channelId: channelId,
+ }),
+ channels: async (paginationKey) => channelQueryService.Channels({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allChannels: async () => {
+ const channels = [];
+ let response;
+ let key;
+ do {
+ response = await channelQueryService.Channels({
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ channels.push(...response.channels);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ channels: channels,
+ height: response.height,
+ };
+ },
+ connectionChannels: async (connection, paginationKey) => channelQueryService.ConnectionChannels({
+ connection: connection,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allConnectionChannels: async (connection) => {
+ const channels = [];
+ let response;
+ let key;
+ do {
+ response = await channelQueryService.ConnectionChannels({
+ connection: connection,
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ channels.push(...response.channels);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ channels: channels,
+ height: response.height,
+ };
+ },
+ clientState: async (portId, channelId) => channelQueryService.ChannelClientState({
+ portId: portId,
+ channelId: channelId,
+ }),
+ consensusState: async (portId, channelId, revisionNumber, revisionHeight) => channelQueryService.ChannelConsensusState({
+ portId: portId,
+ channelId: channelId,
+ revisionNumber: long_1.default.fromNumber(revisionNumber, true),
+ revisionHeight: long_1.default.fromNumber(revisionHeight, true),
+ }),
+ packetCommitment: async (portId, channelId, sequence) => channelQueryService.PacketCommitment({
+ portId: portId,
+ channelId: channelId,
+ sequence: long_1.default.fromNumber(sequence, true),
+ }),
+ packetCommitments: async (portId, channelId, paginationKey) => channelQueryService.PacketCommitments({
+ channelId: channelId,
+ portId: portId,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allPacketCommitments: async (portId, channelId) => {
+ const commitments = [];
+ let response;
+ let key;
+ do {
+ response = await channelQueryService.PacketCommitments({
+ channelId: channelId,
+ portId: portId,
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ commitments.push(...response.commitments);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ commitments: commitments,
+ height: response.height,
+ };
+ },
+ packetReceipt: async (portId, channelId, sequence) => channelQueryService.PacketReceipt({
+ portId: portId,
+ channelId: channelId,
+ sequence: long_1.default.fromNumber(sequence, true),
+ }),
+ packetAcknowledgement: async (portId, channelId, sequence) => channelQueryService.PacketAcknowledgement({
+ portId: portId,
+ channelId: channelId,
+ sequence: long_1.default.fromNumber(sequence, true),
+ }),
+ packetAcknowledgements: async (portId, channelId, paginationKey) => {
+ const request = query_2.QueryPacketAcknowledgementsRequest.fromPartial({
+ portId: portId,
+ channelId: channelId,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return channelQueryService.PacketAcknowledgements(request);
+ },
+ allPacketAcknowledgements: async (portId, channelId) => {
+ const acknowledgements = [];
+ let response;
+ let key;
+ do {
+ const request = query_2.QueryPacketAcknowledgementsRequest.fromPartial({
+ channelId: channelId,
+ portId: portId,
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ response = await channelQueryService.PacketAcknowledgements(request);
+ acknowledgements.push(...response.acknowledgements);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ acknowledgements: acknowledgements,
+ height: response.height,
+ };
+ },
+ unreceivedPackets: async (portId, channelId, packetCommitmentSequences) => channelQueryService.UnreceivedPackets({
+ portId: portId,
+ channelId: channelId,
+ packetCommitmentSequences: packetCommitmentSequences.map((s) => long_1.default.fromNumber(s, true)),
+ }),
+ unreceivedAcks: async (portId, channelId, packetAckSequences) => channelQueryService.UnreceivedAcks({
+ portId: portId,
+ channelId: channelId,
+ packetAckSequences: packetAckSequences.map((s) => long_1.default.fromNumber(s, true)),
+ }),
+ nextSequenceReceive: async (portId, channelId) => channelQueryService.NextSequenceReceive({
+ portId: portId,
+ channelId: channelId,
+ }),
+ },
+ client: {
+ state: async (clientId) => clientQueryService.ClientState({ clientId }),
+ states: async (paginationKey) => clientQueryService.ClientStates({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allStates: async () => {
+ const clientStates = [];
+ let response;
+ let key;
+ do {
+ response = await clientQueryService.ClientStates({
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ clientStates.push(...response.clientStates);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ clientStates: clientStates,
+ };
+ },
+ consensusState: async (clientId, consensusHeight) => clientQueryService.ConsensusState(query_3.QueryConsensusStateRequest.fromPartial({
+ clientId: clientId,
+ revisionHeight: consensusHeight !== undefined ? long_1.default.fromNumber(consensusHeight, true) : undefined,
+ latestHeight: consensusHeight === undefined,
+ })),
+ consensusStates: async (clientId, paginationKey) => clientQueryService.ConsensusStates({
+ clientId: clientId,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allConsensusStates: async (clientId) => {
+ const consensusStates = [];
+ let response;
+ let key;
+ do {
+ response = await clientQueryService.ConsensusStates({
+ clientId: clientId,
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ consensusStates.push(...response.consensusStates);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ consensusStates: consensusStates,
+ };
+ },
+ params: async () => clientQueryService.ClientParams({}),
+ stateTm: async (clientId) => {
+ const response = await clientQueryService.ClientState({ clientId });
+ return decodeTendermintClientStateAny(response.clientState);
+ },
+ statesTm: async (paginationKey) => {
+ const { clientStates } = await clientQueryService.ClientStates({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return clientStates.map(({ clientState }) => decodeTendermintClientStateAny(clientState));
+ },
+ allStatesTm: async () => {
+ const clientStates = [];
+ let response;
+ let key;
+ do {
+ response = await clientQueryService.ClientStates({
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ clientStates.push(...response.clientStates);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return clientStates.map(({ clientState }) => decodeTendermintClientStateAny(clientState));
+ },
+ consensusStateTm: async (clientId, consensusHeight) => {
+ const response = await clientQueryService.ConsensusState(query_3.QueryConsensusStateRequest.fromPartial({
+ clientId: clientId,
+ revisionHeight: consensusHeight?.revisionHeight,
+ revisionNumber: consensusHeight?.revisionNumber,
+ latestHeight: consensusHeight === undefined,
+ }));
+ return decodeTendermintConsensusStateAny(response.consensusState);
+ },
+ },
+ connection: {
+ connection: async (connectionId) => connectionQueryService.Connection({
+ connectionId: connectionId,
+ }),
+ connections: async (paginationKey) => connectionQueryService.Connections({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allConnections: async () => {
+ const connections = [];
+ let response;
+ let key;
+ do {
+ response = await connectionQueryService.Connections({
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ connections.push(...response.connections);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ connections: connections,
+ height: response.height,
+ };
+ },
+ clientConnections: async (clientId) => connectionQueryService.ClientConnections({
+ clientId: clientId,
+ }),
+ clientState: async (connectionId) => connectionQueryService.ConnectionClientState({
+ connectionId: connectionId,
+ }),
+ consensusState: async (connectionId, revisionHeight) => connectionQueryService.ConnectionConsensusState(query_4.QueryConnectionConsensusStateRequest.fromPartial({
+ connectionId: connectionId,
+ revisionHeight: long_1.default.fromNumber(revisionHeight, true),
+ })),
+ },
+ transfer: {
+ denomTrace: async (hash) => transferQueryService.DenomTrace({ hash: hash }),
+ denomTraces: async (paginationKey) => transferQueryService.DenomTraces({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ }),
+ allDenomTraces: async () => {
+ const denomTraces = [];
+ let response;
+ let key;
+ do {
+ response = await transferQueryService.DenomTraces({
+ pagination: (0, queryclient_1.createPagination)(key),
+ });
+ denomTraces.push(...response.denomTraces);
+ key = response.pagination?.nextKey;
+ } while (key && key.length);
+ return {
+ denomTraces: denomTraces,
+ };
+ },
+ params: async () => transferQueryService.Params({}),
+ },
+ verified: {
+ channel: {
+ channel: async (portId, channelId) => {
+ // keeper: https://github.com/cosmos/cosmos-sdk/blob/3bafd8255a502e5a9cee07391cf8261538245dfd/x/ibc/04-channel/keeper/keeper.go#L55-L65
+ // key: https://github.com/cosmos/cosmos-sdk/blob/ef0a7344af345882729598bc2958a21143930a6b/x/ibc/24-host/keys.go#L117-L120
+ const key = (0, encoding_1.toAscii)(`channelEnds/ports/${portId}/channels/${channelId}`);
+ const { value } = await base.queryStoreVerified("ibc", key);
+ return value.length ? channel_1.Channel.decode(value) : null;
+ },
+ packetCommitment: async (portId, channelId, sequence) => {
+ // keeper: https://github.com/cosmos/cosmos-sdk/blob/3bafd8255a502e5a9cee07391cf8261538245dfd/x/ibc/04-channel/keeper/keeper.go#L128-L133
+ // key: https://github.com/cosmos/cosmos-sdk/blob/ef0a7344af345882729598bc2958a21143930a6b/x/ibc/24-host/keys.go#L183-L185
+ const key = (0, encoding_1.toAscii)(`commitments/ports/${portId}/channels/${channelId}/packets/${sequence}`);
+ const { value } = await base.queryStoreVerified("ibc", key);
+ // keeper code doesn't parse, but returns raw
+ return value;
+ },
+ packetAcknowledgement: async (portId, channelId, sequence) => {
+ // keeper: https://github.com/cosmos/cosmos-sdk/blob/3bafd8255a502e5a9cee07391cf8261538245dfd/x/ibc/04-channel/keeper/keeper.go#L159-L166
+ // key: https://github.com/cosmos/cosmos-sdk/blob/ef0a7344af345882729598bc2958a21143930a6b/x/ibc/24-host/keys.go#L153-L156
+ const key = (0, encoding_1.toAscii)(`acks/ports/${portId}/channels/${channelId}/acknowledgements/${sequence}`);
+ const { value } = await base.queryStoreVerified("ibc", key);
+ // keeper code doesn't parse, but returns raw
+ return value;
+ },
+ nextSequenceReceive: async (portId, channelId) => {
+ // keeper: https://github.com/cosmos/cosmos-sdk/blob/3bafd8255a502e5a9cee07391cf8261538245dfd/x/ibc/04-channel/keeper/keeper.go#L92-L101
+ // key: https://github.com/cosmos/cosmos-sdk/blob/ef0a7344af345882729598bc2958a21143930a6b/x/ibc/24-host/keys.go#L133-L136
+ const key = (0, encoding_1.toAscii)(`seqAcks/ports/${portId}/channels/${channelId}/nextSequenceAck`);
+ const { value } = await base.queryStoreVerified("ibc", key);
+ return value.length ? math_1.Uint64.fromBytes(value).toNumber() : null;
+ },
+ },
+ },
+ },
+ };
+}
+exports.setupIbcExtension = setupIbcExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js.map
new file mode 100644
index 00000000..2465d996
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/ibc/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/ibc/queries.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/index.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.d.ts
new file mode 100644
index 00000000..e52644c3
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.d.ts
@@ -0,0 +1,32 @@
+export { AuthExtension, setupAuthExtension } from "./auth/queries";
+export { createAuthzAminoConverters } from "./authz/aminomessages";
+export { authzTypes } from "./authz/messages";
+export { setupAuthzExtension } from "./authz/queries";
+export { AminoMsgMultiSend, AminoMsgSend, createBankAminoConverters, isAminoMsgMultiSend, isAminoMsgSend, } from "./bank/aminomessages";
+export { bankTypes, isMsgSendEncodeObject, MsgSendEncodeObject } from "./bank/messages";
+export { BankExtension, setupBankExtension } from "./bank/queries";
+export { AminoMsgVerifyInvariant, createCrysisAminoConverters, isAminoMsgVerifyInvariant, } from "./crisis/aminomessages";
+export { AminoMsgFundCommunityPool, AminoMsgSetWithdrawAddress, AminoMsgWithdrawDelegatorReward, AminoMsgWithdrawValidatorCommission, createDistributionAminoConverters, isAminoMsgFundCommunityPool, isAminoMsgSetWithdrawAddress, isAminoMsgWithdrawDelegatorReward, isAminoMsgWithdrawValidatorCommission, } from "./distribution/aminomessages";
+export { distributionTypes, isMsgWithdrawDelegatorRewardEncodeObject, MsgWithdrawDelegatorRewardEncodeObject, } from "./distribution/messages";
+export { DistributionExtension, setupDistributionExtension } from "./distribution/queries";
+export { AminoMsgSubmitEvidence, createEvidenceAminoConverters, isAminoMsgSubmitEvidence, } from "./evidence/aminomessages";
+export { createFeegrantAminoConverters } from "./feegrant/aminomessages";
+export { feegrantTypes } from "./feegrant/messages";
+export { FeegrantExtension, setupFeegrantExtension } from "./feegrant/queries";
+export { AminoMsgDeposit, AminoMsgSubmitProposal, AminoMsgVote, AminoMsgVoteWeighted, createGovAminoConverters, isAminoMsgDeposit, isAminoMsgSubmitProposal, isAminoMsgVote, isAminoMsgVoteWeighted, } from "./gov/aminomessages";
+export { govTypes, isMsgDepositEncodeObject, isMsgSubmitProposalEncodeObject, isMsgVoteEncodeObject, isMsgVoteWeightedEncodeObject, MsgDepositEncodeObject, MsgSubmitProposalEncodeObject, MsgVoteEncodeObject, MsgVoteWeightedEncodeObject, } from "./gov/messages";
+export { GovExtension, GovParamsType, GovProposalId, setupGovExtension } from "./gov/queries";
+export { createGroupAminoConverters } from "./group/aminomessages";
+export { groupTypes } from "./group/messages";
+export { AminoMsgTransfer, createIbcAminoConverters, isAminoMsgTransfer } from "./ibc/aminomessages";
+export { ibcTypes, isMsgTransferEncodeObject, MsgTransferEncodeObject } from "./ibc/messages";
+export { IbcExtension, setupIbcExtension } from "./ibc/queries";
+export { MintExtension, MintParams, setupMintExtension } from "./mint/queries";
+export { AminoMsgUnjail, createSlashingAminoConverters, isAminoMsgUnjail } from "./slashing/aminomessages";
+export { setupSlashingExtension, SlashingExtension } from "./slashing/queries";
+export { AminoMsgBeginRedelegate, AminoMsgCreateValidator, AminoMsgDelegate, AminoMsgEditValidator, AminoMsgUndelegate, createStakingAminoConverters, isAminoMsgBeginRedelegate, isAminoMsgCreateValidator, isAminoMsgDelegate, isAminoMsgEditValidator, isAminoMsgUndelegate, } from "./staking/aminomessages";
+export { isMsgBeginRedelegateEncodeObject, isMsgCreateValidatorEncodeObject, isMsgDelegateEncodeObject, isMsgEditValidatorEncodeObject, isMsgUndelegateEncodeObject, MsgBeginRedelegateEncodeObject, MsgCreateValidatorEncodeObject, MsgDelegateEncodeObject, MsgEditValidatorEncodeObject, MsgUndelegateEncodeObject, stakingTypes, } from "./staking/messages";
+export { setupStakingExtension, StakingExtension } from "./staking/queries";
+export { setupTxExtension, TxExtension } from "./tx/queries";
+export { AminoMsgCreateVestingAccount, createVestingAminoConverters, isAminoMsgCreateVestingAccount, } from "./vesting/aminomessages";
+export { vestingTypes } from "./vesting/messages";
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js
new file mode 100644
index 00000000..943fc0cc
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js
@@ -0,0 +1,101 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isAminoMsgCreateValidator = exports.isAminoMsgBeginRedelegate = exports.createStakingAminoConverters = exports.setupSlashingExtension = exports.isAminoMsgUnjail = exports.createSlashingAminoConverters = exports.setupMintExtension = exports.setupIbcExtension = exports.isMsgTransferEncodeObject = exports.ibcTypes = exports.isAminoMsgTransfer = exports.createIbcAminoConverters = exports.groupTypes = exports.createGroupAminoConverters = exports.setupGovExtension = exports.isMsgVoteWeightedEncodeObject = exports.isMsgVoteEncodeObject = exports.isMsgSubmitProposalEncodeObject = exports.isMsgDepositEncodeObject = exports.govTypes = exports.isAminoMsgVoteWeighted = exports.isAminoMsgVote = exports.isAminoMsgSubmitProposal = exports.isAminoMsgDeposit = exports.createGovAminoConverters = exports.setupFeegrantExtension = exports.feegrantTypes = exports.createFeegrantAminoConverters = exports.isAminoMsgSubmitEvidence = exports.createEvidenceAminoConverters = exports.setupDistributionExtension = exports.isMsgWithdrawDelegatorRewardEncodeObject = exports.distributionTypes = exports.isAminoMsgWithdrawValidatorCommission = exports.isAminoMsgWithdrawDelegatorReward = exports.isAminoMsgSetWithdrawAddress = exports.isAminoMsgFundCommunityPool = exports.createDistributionAminoConverters = exports.isAminoMsgVerifyInvariant = exports.createCrysisAminoConverters = exports.setupBankExtension = exports.isMsgSendEncodeObject = exports.bankTypes = exports.isAminoMsgSend = exports.isAminoMsgMultiSend = exports.createBankAminoConverters = exports.setupAuthzExtension = exports.authzTypes = exports.createAuthzAminoConverters = exports.setupAuthExtension = void 0;
+exports.vestingTypes = exports.isAminoMsgCreateVestingAccount = exports.createVestingAminoConverters = exports.setupTxExtension = exports.setupStakingExtension = exports.stakingTypes = exports.isMsgUndelegateEncodeObject = exports.isMsgEditValidatorEncodeObject = exports.isMsgDelegateEncodeObject = exports.isMsgCreateValidatorEncodeObject = exports.isMsgBeginRedelegateEncodeObject = exports.isAminoMsgUndelegate = exports.isAminoMsgEditValidator = exports.isAminoMsgDelegate = void 0;
+var queries_1 = require("./auth/queries");
+Object.defineProperty(exports, "setupAuthExtension", { enumerable: true, get: function () { return queries_1.setupAuthExtension; } });
+var aminomessages_1 = require("./authz/aminomessages");
+Object.defineProperty(exports, "createAuthzAminoConverters", { enumerable: true, get: function () { return aminomessages_1.createAuthzAminoConverters; } });
+var messages_1 = require("./authz/messages");
+Object.defineProperty(exports, "authzTypes", { enumerable: true, get: function () { return messages_1.authzTypes; } });
+var queries_2 = require("./authz/queries");
+Object.defineProperty(exports, "setupAuthzExtension", { enumerable: true, get: function () { return queries_2.setupAuthzExtension; } });
+var aminomessages_2 = require("./bank/aminomessages");
+Object.defineProperty(exports, "createBankAminoConverters", { enumerable: true, get: function () { return aminomessages_2.createBankAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgMultiSend", { enumerable: true, get: function () { return aminomessages_2.isAminoMsgMultiSend; } });
+Object.defineProperty(exports, "isAminoMsgSend", { enumerable: true, get: function () { return aminomessages_2.isAminoMsgSend; } });
+var messages_2 = require("./bank/messages");
+Object.defineProperty(exports, "bankTypes", { enumerable: true, get: function () { return messages_2.bankTypes; } });
+Object.defineProperty(exports, "isMsgSendEncodeObject", { enumerable: true, get: function () { return messages_2.isMsgSendEncodeObject; } });
+var queries_3 = require("./bank/queries");
+Object.defineProperty(exports, "setupBankExtension", { enumerable: true, get: function () { return queries_3.setupBankExtension; } });
+var aminomessages_3 = require("./crisis/aminomessages");
+Object.defineProperty(exports, "createCrysisAminoConverters", { enumerable: true, get: function () { return aminomessages_3.createCrysisAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgVerifyInvariant", { enumerable: true, get: function () { return aminomessages_3.isAminoMsgVerifyInvariant; } });
+var aminomessages_4 = require("./distribution/aminomessages");
+Object.defineProperty(exports, "createDistributionAminoConverters", { enumerable: true, get: function () { return aminomessages_4.createDistributionAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgFundCommunityPool", { enumerable: true, get: function () { return aminomessages_4.isAminoMsgFundCommunityPool; } });
+Object.defineProperty(exports, "isAminoMsgSetWithdrawAddress", { enumerable: true, get: function () { return aminomessages_4.isAminoMsgSetWithdrawAddress; } });
+Object.defineProperty(exports, "isAminoMsgWithdrawDelegatorReward", { enumerable: true, get: function () { return aminomessages_4.isAminoMsgWithdrawDelegatorReward; } });
+Object.defineProperty(exports, "isAminoMsgWithdrawValidatorCommission", { enumerable: true, get: function () { return aminomessages_4.isAminoMsgWithdrawValidatorCommission; } });
+var messages_3 = require("./distribution/messages");
+Object.defineProperty(exports, "distributionTypes", { enumerable: true, get: function () { return messages_3.distributionTypes; } });
+Object.defineProperty(exports, "isMsgWithdrawDelegatorRewardEncodeObject", { enumerable: true, get: function () { return messages_3.isMsgWithdrawDelegatorRewardEncodeObject; } });
+var queries_4 = require("./distribution/queries");
+Object.defineProperty(exports, "setupDistributionExtension", { enumerable: true, get: function () { return queries_4.setupDistributionExtension; } });
+var aminomessages_5 = require("./evidence/aminomessages");
+Object.defineProperty(exports, "createEvidenceAminoConverters", { enumerable: true, get: function () { return aminomessages_5.createEvidenceAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgSubmitEvidence", { enumerable: true, get: function () { return aminomessages_5.isAminoMsgSubmitEvidence; } });
+var aminomessages_6 = require("./feegrant/aminomessages");
+Object.defineProperty(exports, "createFeegrantAminoConverters", { enumerable: true, get: function () { return aminomessages_6.createFeegrantAminoConverters; } });
+var messages_4 = require("./feegrant/messages");
+Object.defineProperty(exports, "feegrantTypes", { enumerable: true, get: function () { return messages_4.feegrantTypes; } });
+var queries_5 = require("./feegrant/queries");
+Object.defineProperty(exports, "setupFeegrantExtension", { enumerable: true, get: function () { return queries_5.setupFeegrantExtension; } });
+var aminomessages_7 = require("./gov/aminomessages");
+Object.defineProperty(exports, "createGovAminoConverters", { enumerable: true, get: function () { return aminomessages_7.createGovAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgDeposit", { enumerable: true, get: function () { return aminomessages_7.isAminoMsgDeposit; } });
+Object.defineProperty(exports, "isAminoMsgSubmitProposal", { enumerable: true, get: function () { return aminomessages_7.isAminoMsgSubmitProposal; } });
+Object.defineProperty(exports, "isAminoMsgVote", { enumerable: true, get: function () { return aminomessages_7.isAminoMsgVote; } });
+Object.defineProperty(exports, "isAminoMsgVoteWeighted", { enumerable: true, get: function () { return aminomessages_7.isAminoMsgVoteWeighted; } });
+var messages_5 = require("./gov/messages");
+Object.defineProperty(exports, "govTypes", { enumerable: true, get: function () { return messages_5.govTypes; } });
+Object.defineProperty(exports, "isMsgDepositEncodeObject", { enumerable: true, get: function () { return messages_5.isMsgDepositEncodeObject; } });
+Object.defineProperty(exports, "isMsgSubmitProposalEncodeObject", { enumerable: true, get: function () { return messages_5.isMsgSubmitProposalEncodeObject; } });
+Object.defineProperty(exports, "isMsgVoteEncodeObject", { enumerable: true, get: function () { return messages_5.isMsgVoteEncodeObject; } });
+Object.defineProperty(exports, "isMsgVoteWeightedEncodeObject", { enumerable: true, get: function () { return messages_5.isMsgVoteWeightedEncodeObject; } });
+var queries_6 = require("./gov/queries");
+Object.defineProperty(exports, "setupGovExtension", { enumerable: true, get: function () { return queries_6.setupGovExtension; } });
+var aminomessages_8 = require("./group/aminomessages");
+Object.defineProperty(exports, "createGroupAminoConverters", { enumerable: true, get: function () { return aminomessages_8.createGroupAminoConverters; } });
+var messages_6 = require("./group/messages");
+Object.defineProperty(exports, "groupTypes", { enumerable: true, get: function () { return messages_6.groupTypes; } });
+var aminomessages_9 = require("./ibc/aminomessages");
+Object.defineProperty(exports, "createIbcAminoConverters", { enumerable: true, get: function () { return aminomessages_9.createIbcAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgTransfer", { enumerable: true, get: function () { return aminomessages_9.isAminoMsgTransfer; } });
+var messages_7 = require("./ibc/messages");
+Object.defineProperty(exports, "ibcTypes", { enumerable: true, get: function () { return messages_7.ibcTypes; } });
+Object.defineProperty(exports, "isMsgTransferEncodeObject", { enumerable: true, get: function () { return messages_7.isMsgTransferEncodeObject; } });
+var queries_7 = require("./ibc/queries");
+Object.defineProperty(exports, "setupIbcExtension", { enumerable: true, get: function () { return queries_7.setupIbcExtension; } });
+var queries_8 = require("./mint/queries");
+Object.defineProperty(exports, "setupMintExtension", { enumerable: true, get: function () { return queries_8.setupMintExtension; } });
+var aminomessages_10 = require("./slashing/aminomessages");
+Object.defineProperty(exports, "createSlashingAminoConverters", { enumerable: true, get: function () { return aminomessages_10.createSlashingAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgUnjail", { enumerable: true, get: function () { return aminomessages_10.isAminoMsgUnjail; } });
+var queries_9 = require("./slashing/queries");
+Object.defineProperty(exports, "setupSlashingExtension", { enumerable: true, get: function () { return queries_9.setupSlashingExtension; } });
+var aminomessages_11 = require("./staking/aminomessages");
+Object.defineProperty(exports, "createStakingAminoConverters", { enumerable: true, get: function () { return aminomessages_11.createStakingAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgBeginRedelegate", { enumerable: true, get: function () { return aminomessages_11.isAminoMsgBeginRedelegate; } });
+Object.defineProperty(exports, "isAminoMsgCreateValidator", { enumerable: true, get: function () { return aminomessages_11.isAminoMsgCreateValidator; } });
+Object.defineProperty(exports, "isAminoMsgDelegate", { enumerable: true, get: function () { return aminomessages_11.isAminoMsgDelegate; } });
+Object.defineProperty(exports, "isAminoMsgEditValidator", { enumerable: true, get: function () { return aminomessages_11.isAminoMsgEditValidator; } });
+Object.defineProperty(exports, "isAminoMsgUndelegate", { enumerable: true, get: function () { return aminomessages_11.isAminoMsgUndelegate; } });
+var messages_8 = require("./staking/messages");
+Object.defineProperty(exports, "isMsgBeginRedelegateEncodeObject", { enumerable: true, get: function () { return messages_8.isMsgBeginRedelegateEncodeObject; } });
+Object.defineProperty(exports, "isMsgCreateValidatorEncodeObject", { enumerable: true, get: function () { return messages_8.isMsgCreateValidatorEncodeObject; } });
+Object.defineProperty(exports, "isMsgDelegateEncodeObject", { enumerable: true, get: function () { return messages_8.isMsgDelegateEncodeObject; } });
+Object.defineProperty(exports, "isMsgEditValidatorEncodeObject", { enumerable: true, get: function () { return messages_8.isMsgEditValidatorEncodeObject; } });
+Object.defineProperty(exports, "isMsgUndelegateEncodeObject", { enumerable: true, get: function () { return messages_8.isMsgUndelegateEncodeObject; } });
+Object.defineProperty(exports, "stakingTypes", { enumerable: true, get: function () { return messages_8.stakingTypes; } });
+var queries_10 = require("./staking/queries");
+Object.defineProperty(exports, "setupStakingExtension", { enumerable: true, get: function () { return queries_10.setupStakingExtension; } });
+var queries_11 = require("./tx/queries");
+Object.defineProperty(exports, "setupTxExtension", { enumerable: true, get: function () { return queries_11.setupTxExtension; } });
+var aminomessages_12 = require("./vesting/aminomessages");
+Object.defineProperty(exports, "createVestingAminoConverters", { enumerable: true, get: function () { return aminomessages_12.createVestingAminoConverters; } });
+Object.defineProperty(exports, "isAminoMsgCreateVestingAccount", { enumerable: true, get: function () { return aminomessages_12.isAminoMsgCreateVestingAccount; } });
+var messages_9 = require("./vesting/messages");
+Object.defineProperty(exports, "vestingTypes", { enumerable: true, get: function () { return messages_9.vestingTypes; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js.map
new file mode 100644
index 00000000..bbbf3bb6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":";;;;AAAA,0CAAmE;AAA3C,6GAAA,kBAAkB,OAAA;AAC1C,uDAAmE;AAA1D,2HAAA,0BAA0B,OAAA;AACnC,6CAA8C;AAArC,sGAAA,UAAU,OAAA;AACnB,2CAAsD;AAA7C,8GAAA,mBAAmB,OAAA;AAC5B,sDAM8B;AAH5B,0HAAA,yBAAyB,OAAA;AACzB,oHAAA,mBAAmB,OAAA;AACnB,+GAAA,cAAc,OAAA;AAEhB,4CAAwF;AAA/E,qGAAA,SAAS,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AACzC,0CAAmE;AAA3C,6GAAA,kBAAkB,OAAA;AAC1C,wDAIgC;AAF9B,4HAAA,2BAA2B,OAAA;AAC3B,0HAAA,yBAAyB,OAAA;AAE3B,8DAUsC;AALpC,kIAAA,iCAAiC,OAAA;AACjC,4HAAA,2BAA2B,OAAA;AAC3B,6HAAA,4BAA4B,OAAA;AAC5B,kIAAA,iCAAiC,OAAA;AACjC,sIAAA,qCAAqC,OAAA;AAEvC,oDAIiC;AAH/B,6GAAA,iBAAiB,OAAA;AACjB,oIAAA,wCAAwC,OAAA;AAG1C,kDAA2F;AAA3D,qHAAA,0BAA0B,OAAA;AAC1D,0DAIkC;AAFhC,8HAAA,6BAA6B,OAAA;AAC7B,yHAAA,wBAAwB,OAAA;AAE1B,0DAAyE;AAAhE,8HAAA,6BAA6B,OAAA;AACtC,gDAAoD;AAA3C,yGAAA,aAAa,OAAA;AACtB,8CAA+E;AAAnD,iHAAA,sBAAsB,OAAA;AAClD,qDAU6B;AAL3B,yHAAA,wBAAwB,OAAA;AACxB,kHAAA,iBAAiB,OAAA;AACjB,yHAAA,wBAAwB,OAAA;AACxB,+GAAA,cAAc,OAAA;AACd,uHAAA,sBAAsB,OAAA;AAExB,2CAUwB;AATtB,oGAAA,QAAQ,OAAA;AACR,oHAAA,wBAAwB,OAAA;AACxB,2HAAA,+BAA+B,OAAA;AAC/B,iHAAA,qBAAqB,OAAA;AACrB,yHAAA,6BAA6B,OAAA;AAM/B,yCAA8F;AAAzC,4GAAA,iBAAiB,OAAA;AACtE,uDAAmE;AAA1D,2HAAA,0BAA0B,OAAA;AACnC,6CAA8C;AAArC,sGAAA,UAAU,OAAA;AACnB,qDAAqG;AAA1E,yHAAA,wBAAwB,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AACvE,2CAA8F;AAArF,oGAAA,QAAQ,OAAA;AAAE,qHAAA,yBAAyB,OAAA;AAC5C,yCAAgE;AAAzC,4GAAA,iBAAiB,OAAA;AACxC,0CAA+E;AAA3C,6GAAA,kBAAkB,OAAA;AACtD,2DAA2G;AAAlF,+HAAA,6BAA6B,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AACxE,8CAA+E;AAAtE,iHAAA,sBAAsB,OAAA;AAC/B,0DAYiC;AAN/B,8HAAA,4BAA4B,OAAA;AAC5B,2HAAA,yBAAyB,OAAA;AACzB,2HAAA,yBAAyB,OAAA;AACzB,oHAAA,kBAAkB,OAAA;AAClB,yHAAA,uBAAuB,OAAA;AACvB,sHAAA,oBAAoB,OAAA;AAEtB,+CAY4B;AAX1B,4HAAA,gCAAgC,OAAA;AAChC,4HAAA,gCAAgC,OAAA;AAChC,qHAAA,yBAAyB,OAAA;AACzB,0HAAA,8BAA8B,OAAA;AAC9B,uHAAA,2BAA2B,OAAA;AAM3B,wGAAA,YAAY,OAAA;AAEd,8CAA4E;AAAnE,iHAAA,qBAAqB,OAAA;AAC9B,yCAA6D;AAApD,4GAAA,gBAAgB,OAAA;AACzB,0DAIiC;AAF/B,8HAAA,4BAA4B,OAAA;AAC5B,gIAAA,8BAA8B,OAAA;AAEhC,+CAAkD;AAAzC,wGAAA,YAAY,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.d.ts
new file mode 100644
index 00000000..235e8e08
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.d.ts
@@ -0,0 +1,21 @@
+import { Decimal } from "@cosmjs/math";
+import { Params } from "cosmjs-types/cosmos/mint/v1beta1/mint";
+import { QueryClient } from "../../queryclient";
+/**
+ * Like Params from "cosmjs-types/cosmos/mint/v1beta1/mint"
+ * but using decimal types.
+ */
+export interface MintParams extends Pick {
+ readonly goalBonded: Decimal;
+ readonly inflationMin: Decimal;
+ readonly inflationMax: Decimal;
+ readonly inflationRateChange: Decimal;
+}
+export interface MintExtension {
+ readonly mint: {
+ readonly params: () => Promise;
+ readonly inflation: () => Promise;
+ readonly annualProvisions: () => Promise;
+ };
+}
+export declare function setupMintExtension(base: QueryClient): MintExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js
new file mode 100644
index 00000000..f056675d
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js
@@ -0,0 +1,38 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupMintExtension = void 0;
+const utils_1 = require("@cosmjs/utils");
+const query_1 = require("cosmjs-types/cosmos/mint/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupMintExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ mint: {
+ params: async () => {
+ const { params } = await queryService.Params({});
+ (0, utils_1.assert)(params);
+ return {
+ blocksPerYear: params.blocksPerYear,
+ goalBonded: (0, queryclient_1.decodeCosmosSdkDecFromProto)(params.goalBonded),
+ inflationMin: (0, queryclient_1.decodeCosmosSdkDecFromProto)(params.inflationMin),
+ inflationMax: (0, queryclient_1.decodeCosmosSdkDecFromProto)(params.inflationMax),
+ inflationRateChange: (0, queryclient_1.decodeCosmosSdkDecFromProto)(params.inflationRateChange),
+ mintDenom: params.mintDenom,
+ };
+ },
+ inflation: async () => {
+ const { inflation } = await queryService.Inflation({});
+ return (0, queryclient_1.decodeCosmosSdkDecFromProto)(inflation);
+ },
+ annualProvisions: async () => {
+ const { annualProvisions } = await queryService.AnnualProvisions({});
+ return (0, queryclient_1.decodeCosmosSdkDecFromProto)(annualProvisions);
+ },
+ },
+ };
+}
+exports.setupMintExtension = setupMintExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js.map
new file mode 100644
index 00000000..7576a096
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/mint/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/mint/queries.ts"],"names":[],"mappings":";;;AACA,yCAAuC;AAEvC,kEAAyE;AAEzE,mDAAsG;AAqBtG,SAAgB,kBAAkB,CAAC,IAAiB;IAClD,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK,IAAyB,EAAE;gBACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;gBAEf,OAAO;oBACL,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,UAAU,EAAE,IAAA,yCAA2B,EAAC,MAAM,CAAC,UAAU,CAAC;oBAC1D,YAAY,EAAE,IAAA,yCAA2B,EAAC,MAAM,CAAC,YAAY,CAAC;oBAC9D,YAAY,EAAE,IAAA,yCAA2B,EAAC,MAAM,CAAC,YAAY,CAAC;oBAC9D,mBAAmB,EAAE,IAAA,yCAA2B,EAAC,MAAM,CAAC,mBAAmB,CAAC;oBAC5E,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC;YACJ,CAAC;YACD,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACvD,OAAO,IAAA,yCAA2B,EAAC,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBACrE,OAAO,IAAA,yCAA2B,EAAC,gBAAgB,CAAC,CAAC;YACvD,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AA/BD,gDA+BC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.d.ts
new file mode 100644
index 00000000..da320a34
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.d.ts
@@ -0,0 +1,12 @@
+import { AminoMsg } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+/** Unjails a jailed validator */
+export interface AminoMsgUnjail extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgUnjail";
+ readonly value: {
+ /** Bech32 account address */
+ readonly validator_addr: string;
+ };
+}
+export declare function isAminoMsgUnjail(msg: AminoMsg): msg is AminoMsgUnjail;
+export declare function createSlashingAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js
new file mode 100644
index 00000000..df0b8791
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createSlashingAminoConverters = exports.isAminoMsgUnjail = void 0;
+function isAminoMsgUnjail(msg) {
+ return msg.type === "cosmos-sdk/MsgUnjail";
+}
+exports.isAminoMsgUnjail = isAminoMsgUnjail;
+function createSlashingAminoConverters() {
+ throw new Error("Not implemented");
+}
+exports.createSlashingAminoConverters = createSlashingAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js.map
new file mode 100644
index 00000000..5cbefce5
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/slashing/aminomessages.ts"],"names":[],"mappings":";;;AAgBA,SAAgB,gBAAgB,CAAC,GAAa;IAC5C,OAAO,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC;AAC7C,CAAC;AAFD,4CAEC;AAED,SAAgB,6BAA6B;IAC3C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAFD,sEAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.d.ts
new file mode 100644
index 00000000..8cd05cd7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.d.ts
@@ -0,0 +1,10 @@
+import { QueryParamsResponse, QuerySigningInfoResponse, QuerySigningInfosResponse } from "cosmjs-types/cosmos/slashing/v1beta1/query";
+import { QueryClient } from "../../queryclient";
+export interface SlashingExtension {
+ readonly slashing: {
+ signingInfo: (consAddress: string) => Promise;
+ signingInfos: (paginationKey?: Uint8Array) => Promise;
+ params: () => Promise;
+ };
+}
+export declare function setupSlashingExtension(base: QueryClient): SlashingExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js
new file mode 100644
index 00000000..bfd30822
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupSlashingExtension = void 0;
+const query_1 = require("cosmjs-types/cosmos/slashing/v1beta1/query");
+const queryclient_1 = require("../../queryclient");
+function setupSlashingExtension(base) {
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ slashing: {
+ signingInfo: async (consAddress) => {
+ const response = await queryService.SigningInfo({
+ consAddress: consAddress,
+ });
+ return response;
+ },
+ signingInfos: async (paginationKey) => {
+ const response = await queryService.SigningInfos({
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ params: async () => {
+ const response = await queryService.Params({});
+ return response;
+ },
+ },
+ };
+}
+exports.setupSlashingExtension = setupSlashingExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js.map
new file mode 100644
index 00000000..c11d69ba
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/slashing/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/slashing/queries.ts"],"names":[],"mappings":";;;AAMA,sEAA6E;AAE7E,mDAA2F;AAU3F,SAAgB,sBAAsB,CAAC,IAAiB;IACtD,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,uBAAe,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK,EAAE,WAAmB,EAAE,EAAE;gBACzC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;oBAC9C,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,YAAY,EAAE,KAAK,EAAE,aAA0B,EAAE,EAAE;gBACjD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;oBAC/C,UAAU,EAAE,IAAA,8BAAgB,EAAC,aAAa,CAAC;iBAC5C,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC/C,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAxBD,wDAwBC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.d.ts
new file mode 100644
index 00000000..2c8dfcea
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.d.ts
@@ -0,0 +1,102 @@
+import { AminoMsg, Coin, Pubkey } from "@cosmjs/amino";
+import { AminoConverter } from "../..";
+/** The initial commission rates to be used for creating a validator */
+interface CommissionRates {
+ readonly rate: string;
+ readonly max_rate: string;
+ readonly max_change_rate: string;
+}
+/** A validator description. */
+interface Description {
+ readonly moniker: string;
+ readonly identity: string;
+ readonly website: string;
+ readonly security_contact: string;
+ readonly details: string;
+}
+export declare function protoDecimalToJson(decimal: string): string;
+/** Creates a new validator. */
+export interface AminoMsgCreateValidator extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgCreateValidator";
+ readonly value: {
+ readonly description: Description;
+ readonly commission: CommissionRates;
+ readonly min_self_delegation: string;
+ /** Bech32 encoded delegator address */
+ readonly delegator_address: string;
+ /** Bech32 encoded validator address */
+ readonly validator_address: string;
+ /** Public key */
+ readonly pubkey: Pubkey;
+ readonly value: Coin;
+ };
+}
+export declare function isAminoMsgCreateValidator(msg: AminoMsg): msg is AminoMsgCreateValidator;
+/** Edits an existing validator. */
+export interface AminoMsgEditValidator extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgEditValidator";
+ readonly value: {
+ readonly description: Description;
+ /** Bech32 encoded validator address */
+ readonly validator_address: string;
+ /**
+ * The new value for the comission rate.
+ *
+ * An empty string in the protobuf document means "do not change".
+ * In Amino JSON this empty string becomes undefined (omitempty)
+ */
+ readonly commission_rate: string | undefined;
+ /**
+ * The new value for the comission rate.
+ *
+ * An empty string in the protobuf document means "do not change".
+ * In Amino JSON this empty string becomes undefined (omitempty)
+ */
+ readonly min_self_delegation: string | undefined;
+ };
+}
+export declare function isAminoMsgEditValidator(msg: AminoMsg): msg is AminoMsgEditValidator;
+/**
+ * Performs a delegation from a delegate to a validator.
+ *
+ * @see https://docs.cosmos.network/master/modules/staking/03_messages.html#msgdelegate
+ */
+export interface AminoMsgDelegate extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgDelegate";
+ readonly value: {
+ /** Bech32 encoded delegator address */
+ readonly delegator_address: string;
+ /** Bech32 encoded validator address */
+ readonly validator_address: string;
+ readonly amount: Coin;
+ };
+}
+export declare function isAminoMsgDelegate(msg: AminoMsg): msg is AminoMsgDelegate;
+/** Performs a redelegation from a delegate and source validator to a destination validator */
+export interface AminoMsgBeginRedelegate extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgBeginRedelegate";
+ readonly value: {
+ /** Bech32 encoded delegator address */
+ readonly delegator_address: string;
+ /** Bech32 encoded source validator address */
+ readonly validator_src_address: string;
+ /** Bech32 encoded destination validator address */
+ readonly validator_dst_address: string;
+ readonly amount: Coin;
+ };
+}
+export declare function isAminoMsgBeginRedelegate(msg: AminoMsg): msg is AminoMsgBeginRedelegate;
+/** Performs an undelegation from a delegate and a validator */
+export interface AminoMsgUndelegate extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgUndelegate";
+ readonly value: {
+ /** Bech32 encoded delegator address */
+ readonly delegator_address: string;
+ /** Bech32 encoded validator address */
+ readonly validator_address: string;
+ readonly amount: Coin;
+ };
+}
+export declare function isAminoMsgUndelegate(msg: AminoMsg): msg is AminoMsgUndelegate;
+export declare function createStakingAminoConverters(): Record;
+export {};
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js
new file mode 100644
index 00000000..9e16ff74
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js
@@ -0,0 +1,175 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createStakingAminoConverters = exports.isAminoMsgUndelegate = exports.isAminoMsgBeginRedelegate = exports.isAminoMsgDelegate = exports.isAminoMsgEditValidator = exports.isAminoMsgCreateValidator = exports.protoDecimalToJson = void 0;
+const math_1 = require("@cosmjs/math");
+const proto_signing_1 = require("@cosmjs/proto-signing");
+const utils_1 = require("@cosmjs/utils");
+function protoDecimalToJson(decimal) {
+ const parsed = math_1.Decimal.fromAtomics(decimal, 18);
+ const [whole, fractional] = parsed.toString().split(".");
+ return `${whole}.${(fractional ?? "").padEnd(18, "0")}`;
+}
+exports.protoDecimalToJson = protoDecimalToJson;
+function jsonDecimalToProto(decimal) {
+ const parsed = math_1.Decimal.fromUserInput(decimal, 18);
+ return parsed.atomics;
+}
+function isAminoMsgCreateValidator(msg) {
+ return msg.type === "cosmos-sdk/MsgCreateValidator";
+}
+exports.isAminoMsgCreateValidator = isAminoMsgCreateValidator;
+function isAminoMsgEditValidator(msg) {
+ return msg.type === "cosmos-sdk/MsgEditValidator";
+}
+exports.isAminoMsgEditValidator = isAminoMsgEditValidator;
+function isAminoMsgDelegate(msg) {
+ return msg.type === "cosmos-sdk/MsgDelegate";
+}
+exports.isAminoMsgDelegate = isAminoMsgDelegate;
+function isAminoMsgBeginRedelegate(msg) {
+ return msg.type === "cosmos-sdk/MsgBeginRedelegate";
+}
+exports.isAminoMsgBeginRedelegate = isAminoMsgBeginRedelegate;
+function isAminoMsgUndelegate(msg) {
+ return msg.type === "cosmos-sdk/MsgUndelegate";
+}
+exports.isAminoMsgUndelegate = isAminoMsgUndelegate;
+function createStakingAminoConverters() {
+ return {
+ "/cosmos.staking.v1beta1.MsgBeginRedelegate": {
+ aminoType: "cosmos-sdk/MsgBeginRedelegate",
+ toAmino: ({ delegatorAddress, validatorSrcAddress, validatorDstAddress, amount, }) => {
+ (0, utils_1.assertDefinedAndNotNull)(amount, "missing amount");
+ return {
+ delegator_address: delegatorAddress,
+ validator_src_address: validatorSrcAddress,
+ validator_dst_address: validatorDstAddress,
+ amount: amount,
+ };
+ },
+ fromAmino: ({ delegator_address, validator_src_address, validator_dst_address, amount, }) => ({
+ delegatorAddress: delegator_address,
+ validatorSrcAddress: validator_src_address,
+ validatorDstAddress: validator_dst_address,
+ amount: amount,
+ }),
+ },
+ "/cosmos.staking.v1beta1.MsgCreateValidator": {
+ aminoType: "cosmos-sdk/MsgCreateValidator",
+ toAmino: ({ description, commission, minSelfDelegation, delegatorAddress, validatorAddress, pubkey, value, }) => {
+ (0, utils_1.assertDefinedAndNotNull)(description, "missing description");
+ (0, utils_1.assertDefinedAndNotNull)(commission, "missing commission");
+ (0, utils_1.assertDefinedAndNotNull)(pubkey, "missing pubkey");
+ (0, utils_1.assertDefinedAndNotNull)(value, "missing value");
+ return {
+ description: {
+ moniker: description.moniker,
+ identity: description.identity,
+ website: description.website,
+ security_contact: description.securityContact,
+ details: description.details,
+ },
+ commission: {
+ rate: protoDecimalToJson(commission.rate),
+ max_rate: protoDecimalToJson(commission.maxRate),
+ max_change_rate: protoDecimalToJson(commission.maxChangeRate),
+ },
+ min_self_delegation: minSelfDelegation,
+ delegator_address: delegatorAddress,
+ validator_address: validatorAddress,
+ pubkey: (0, proto_signing_1.decodePubkey)(pubkey),
+ value: value,
+ };
+ },
+ fromAmino: ({ description, commission, min_self_delegation, delegator_address, validator_address, pubkey, value, }) => {
+ return {
+ description: {
+ moniker: description.moniker,
+ identity: description.identity,
+ website: description.website,
+ securityContact: description.security_contact,
+ details: description.details,
+ },
+ commission: {
+ rate: jsonDecimalToProto(commission.rate),
+ maxRate: jsonDecimalToProto(commission.max_rate),
+ maxChangeRate: jsonDecimalToProto(commission.max_change_rate),
+ },
+ minSelfDelegation: min_self_delegation,
+ delegatorAddress: delegator_address,
+ validatorAddress: validator_address,
+ pubkey: (0, proto_signing_1.encodePubkey)(pubkey),
+ value: value,
+ };
+ },
+ },
+ "/cosmos.staking.v1beta1.MsgDelegate": {
+ aminoType: "cosmos-sdk/MsgDelegate",
+ toAmino: ({ delegatorAddress, validatorAddress, amount }) => {
+ (0, utils_1.assertDefinedAndNotNull)(amount, "missing amount");
+ return {
+ delegator_address: delegatorAddress,
+ validator_address: validatorAddress,
+ amount: amount,
+ };
+ },
+ fromAmino: ({ delegator_address, validator_address, amount, }) => ({
+ delegatorAddress: delegator_address,
+ validatorAddress: validator_address,
+ amount: amount,
+ }),
+ },
+ "/cosmos.staking.v1beta1.MsgEditValidator": {
+ aminoType: "cosmos-sdk/MsgEditValidator",
+ toAmino: ({ description, commissionRate, minSelfDelegation, validatorAddress, }) => {
+ (0, utils_1.assertDefinedAndNotNull)(description, "missing description");
+ return {
+ description: {
+ moniker: description.moniker,
+ identity: description.identity,
+ website: description.website,
+ security_contact: description.securityContact,
+ details: description.details,
+ },
+ // empty string in the protobuf document means "do not change"
+ commission_rate: commissionRate ? protoDecimalToJson(commissionRate) : undefined,
+ // empty string in the protobuf document means "do not change"
+ min_self_delegation: minSelfDelegation ? minSelfDelegation : undefined,
+ validator_address: validatorAddress,
+ };
+ },
+ fromAmino: ({ description, commission_rate, min_self_delegation, validator_address, }) => ({
+ description: {
+ moniker: description.moniker,
+ identity: description.identity,
+ website: description.website,
+ securityContact: description.security_contact,
+ details: description.details,
+ },
+ // empty string in the protobuf document means "do not change"
+ commissionRate: commission_rate ? jsonDecimalToProto(commission_rate) : "",
+ // empty string in the protobuf document means "do not change"
+ minSelfDelegation: min_self_delegation ?? "",
+ validatorAddress: validator_address,
+ }),
+ },
+ "/cosmos.staking.v1beta1.MsgUndelegate": {
+ aminoType: "cosmos-sdk/MsgUndelegate",
+ toAmino: ({ delegatorAddress, validatorAddress, amount, }) => {
+ (0, utils_1.assertDefinedAndNotNull)(amount, "missing amount");
+ return {
+ delegator_address: delegatorAddress,
+ validator_address: validatorAddress,
+ amount: amount,
+ };
+ },
+ fromAmino: ({ delegator_address, validator_address, amount, }) => ({
+ delegatorAddress: delegator_address,
+ validatorAddress: validator_address,
+ amount: amount,
+ }),
+ },
+ };
+}
+exports.createStakingAminoConverters = createStakingAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js.map
new file mode 100644
index 00000000..974904e6
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/staking/aminomessages.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.d.ts
new file mode 100644
index 00000000..4fafdcda
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.d.ts
@@ -0,0 +1,28 @@
+import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing";
+import { MsgBeginRedelegate, MsgCreateValidator, MsgDelegate, MsgEditValidator, MsgUndelegate } from "cosmjs-types/cosmos/staking/v1beta1/tx";
+export declare const stakingTypes: ReadonlyArray<[string, GeneratedType]>;
+export interface MsgBeginRedelegateEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.staking.v1beta1.MsgBeginRedelegate";
+ readonly value: Partial;
+}
+export declare function isMsgBeginRedelegateEncodeObject(o: EncodeObject): o is MsgBeginRedelegateEncodeObject;
+export interface MsgCreateValidatorEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.staking.v1beta1.MsgCreateValidator";
+ readonly value: Partial;
+}
+export declare function isMsgCreateValidatorEncodeObject(o: EncodeObject): o is MsgCreateValidatorEncodeObject;
+export interface MsgDelegateEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.staking.v1beta1.MsgDelegate";
+ readonly value: Partial;
+}
+export declare function isMsgDelegateEncodeObject(object: EncodeObject): object is MsgDelegateEncodeObject;
+export interface MsgEditValidatorEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.staking.v1beta1.MsgEditValidator";
+ readonly value: Partial;
+}
+export declare function isMsgEditValidatorEncodeObject(o: EncodeObject): o is MsgEditValidatorEncodeObject;
+export interface MsgUndelegateEncodeObject extends EncodeObject {
+ readonly typeUrl: "/cosmos.staking.v1beta1.MsgUndelegate";
+ readonly value: Partial;
+}
+export declare function isMsgUndelegateEncodeObject(object: EncodeObject): object is MsgUndelegateEncodeObject;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js
new file mode 100644
index 00000000..b669e6b8
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isMsgUndelegateEncodeObject = exports.isMsgEditValidatorEncodeObject = exports.isMsgDelegateEncodeObject = exports.isMsgCreateValidatorEncodeObject = exports.isMsgBeginRedelegateEncodeObject = exports.stakingTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/staking/v1beta1/tx");
+exports.stakingTypes = [
+ ["/cosmos.staking.v1beta1.MsgBeginRedelegate", tx_1.MsgBeginRedelegate],
+ ["/cosmos.staking.v1beta1.MsgCreateValidator", tx_1.MsgCreateValidator],
+ ["/cosmos.staking.v1beta1.MsgDelegate", tx_1.MsgDelegate],
+ ["/cosmos.staking.v1beta1.MsgEditValidator", tx_1.MsgEditValidator],
+ ["/cosmos.staking.v1beta1.MsgUndelegate", tx_1.MsgUndelegate],
+];
+function isMsgBeginRedelegateEncodeObject(o) {
+ return o.typeUrl === "/cosmos.staking.v1beta1.MsgBeginRedelegate";
+}
+exports.isMsgBeginRedelegateEncodeObject = isMsgBeginRedelegateEncodeObject;
+function isMsgCreateValidatorEncodeObject(o) {
+ return o.typeUrl === "/cosmos.staking.v1beta1.MsgCreateValidator";
+}
+exports.isMsgCreateValidatorEncodeObject = isMsgCreateValidatorEncodeObject;
+function isMsgDelegateEncodeObject(object) {
+ return object.typeUrl === "/cosmos.staking.v1beta1.MsgDelegate";
+}
+exports.isMsgDelegateEncodeObject = isMsgDelegateEncodeObject;
+function isMsgEditValidatorEncodeObject(o) {
+ return o.typeUrl === "/cosmos.staking.v1beta1.MsgEditValidator";
+}
+exports.isMsgEditValidatorEncodeObject = isMsgEditValidatorEncodeObject;
+function isMsgUndelegateEncodeObject(object) {
+ return object.typeUrl === "/cosmos.staking.v1beta1.MsgUndelegate";
+}
+exports.isMsgUndelegateEncodeObject = isMsgUndelegateEncodeObject;
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js.map
new file mode 100644
index 00000000..613b464e
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/staking/messages.ts"],"names":[],"mappings":";;;AACA,+DAMgD;AAEnC,QAAA,YAAY,GAA2C;IAClE,CAAC,4CAA4C,EAAE,uBAAkB,CAAC;IAClE,CAAC,4CAA4C,EAAE,uBAAkB,CAAC;IAClE,CAAC,qCAAqC,EAAE,gBAAW,CAAC;IACpD,CAAC,0CAA0C,EAAE,qBAAgB,CAAC;IAC9D,CAAC,uCAAuC,EAAE,kBAAa,CAAC;CACzD,CAAC;AAOF,SAAgB,gCAAgC,CAAC,CAAe;IAC9D,OAAQ,CAAoC,CAAC,OAAO,KAAK,4CAA4C,CAAC;AACxG,CAAC;AAFD,4EAEC;AAOD,SAAgB,gCAAgC,CAAC,CAAe;IAC9D,OAAQ,CAAoC,CAAC,OAAO,KAAK,4CAA4C,CAAC;AACxG,CAAC;AAFD,4EAEC;AAOD,SAAgB,yBAAyB,CAAC,MAAoB;IAC5D,OAAQ,MAAkC,CAAC,OAAO,KAAK,qCAAqC,CAAC;AAC/F,CAAC;AAFD,8DAEC;AAOD,SAAgB,8BAA8B,CAAC,CAAe;IAC5D,OAAQ,CAAkC,CAAC,OAAO,KAAK,0CAA0C,CAAC;AACpG,CAAC;AAFD,wEAEC;AAOD,SAAgB,2BAA2B,CAAC,MAAoB;IAC9D,OAAQ,MAAoC,CAAC,OAAO,KAAK,uCAAuC,CAAC;AACnG,CAAC;AAFD,kEAEC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.d.ts
new file mode 100644
index 00000000..e11a977b
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.d.ts
@@ -0,0 +1,23 @@
+import { QueryDelegationResponse, QueryDelegatorDelegationsResponse, QueryDelegatorUnbondingDelegationsResponse, QueryDelegatorValidatorResponse, QueryDelegatorValidatorsResponse, QueryHistoricalInfoResponse, QueryParamsResponse, QueryPoolResponse, QueryRedelegationsResponse, QueryUnbondingDelegationResponse, QueryValidatorDelegationsResponse, QueryValidatorResponse, QueryValidatorsResponse, QueryValidatorUnbondingDelegationsResponse } from "cosmjs-types/cosmos/staking/v1beta1/query";
+import { BondStatus } from "cosmjs-types/cosmos/staking/v1beta1/staking";
+import { QueryClient } from "../../queryclient";
+export type BondStatusString = keyof Pick | "";
+export interface StakingExtension {
+ readonly staking: {
+ delegation: (delegatorAddress: string, validatorAddress: string) => Promise;
+ delegatorDelegations: (delegatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ delegatorUnbondingDelegations: (delegatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ delegatorValidator: (delegatorAddress: string, validatorAddress: string) => Promise;
+ delegatorValidators: (delegatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ historicalInfo: (height: number) => Promise;
+ params: () => Promise;
+ pool: () => Promise;
+ redelegations: (delegatorAddress: string, sourceValidatorAddress: string, destinationValidatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ unbondingDelegation: (delegatorAddress: string, validatorAddress: string) => Promise;
+ validator: (validatorAddress: string) => Promise;
+ validatorDelegations: (validatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ validators: (status: BondStatusString, paginationKey?: Uint8Array) => Promise;
+ validatorUnbondingDelegations: (validatorAddress: string, paginationKey?: Uint8Array) => Promise;
+ };
+}
+export declare function setupStakingExtension(base: QueryClient): StakingExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js
new file mode 100644
index 00000000..813169e4
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js
@@ -0,0 +1,112 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupStakingExtension = void 0;
+/* eslint-disable @typescript-eslint/naming-convention */
+const query_1 = require("cosmjs-types/cosmos/staking/v1beta1/query");
+const long_1 = __importDefault(require("long"));
+const queryclient_1 = require("../../queryclient");
+function setupStakingExtension(base) {
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ const queryService = new query_1.QueryClientImpl(rpc);
+ return {
+ staking: {
+ delegation: async (delegatorAddress, validatorAddress) => {
+ const response = await queryService.Delegation({
+ delegatorAddr: delegatorAddress,
+ validatorAddr: validatorAddress,
+ });
+ return response;
+ },
+ delegatorDelegations: async (delegatorAddress, paginationKey) => {
+ const response = await queryService.DelegatorDelegations({
+ delegatorAddr: delegatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ delegatorUnbondingDelegations: async (delegatorAddress, paginationKey) => {
+ const response = await queryService.DelegatorUnbondingDelegations({
+ delegatorAddr: delegatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ delegatorValidator: async (delegatorAddress, validatorAddress) => {
+ const response = await queryService.DelegatorValidator({
+ delegatorAddr: delegatorAddress,
+ validatorAddr: validatorAddress,
+ });
+ return response;
+ },
+ delegatorValidators: async (delegatorAddress, paginationKey) => {
+ const response = await queryService.DelegatorValidators({
+ delegatorAddr: delegatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ historicalInfo: async (height) => {
+ const response = await queryService.HistoricalInfo({
+ height: long_1.default.fromNumber(height, true),
+ });
+ return response;
+ },
+ params: async () => {
+ const response = await queryService.Params({});
+ return response;
+ },
+ pool: async () => {
+ const response = await queryService.Pool({});
+ return response;
+ },
+ redelegations: async (delegatorAddress, sourceValidatorAddress, destinationValidatorAddress, paginationKey) => {
+ const response = await queryService.Redelegations({
+ delegatorAddr: delegatorAddress,
+ srcValidatorAddr: sourceValidatorAddress,
+ dstValidatorAddr: destinationValidatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ unbondingDelegation: async (delegatorAddress, validatorAddress) => {
+ const response = await queryService.UnbondingDelegation({
+ delegatorAddr: delegatorAddress,
+ validatorAddr: validatorAddress,
+ });
+ return response;
+ },
+ validator: async (validatorAddress) => {
+ const response = await queryService.Validator({ validatorAddr: validatorAddress });
+ return response;
+ },
+ validatorDelegations: async (validatorAddress, paginationKey) => {
+ const response = await queryService.ValidatorDelegations({
+ validatorAddr: validatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ validators: async (status, paginationKey) => {
+ const response = await queryService.Validators({
+ status: status,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ validatorUnbondingDelegations: async (validatorAddress, paginationKey) => {
+ const response = await queryService.ValidatorUnbondingDelegations({
+ validatorAddr: validatorAddress,
+ pagination: (0, queryclient_1.createPagination)(paginationKey),
+ });
+ return response;
+ },
+ },
+ };
+}
+exports.setupStakingExtension = setupStakingExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js.map
new file mode 100644
index 00000000..8256e60f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/staking/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/staking/queries.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.d.ts
new file mode 100644
index 00000000..804d654f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.d.ts
@@ -0,0 +1,11 @@
+import { Pubkey } from "@cosmjs/amino";
+import { GetTxResponse, SimulateResponse } from "cosmjs-types/cosmos/tx/v1beta1/service";
+import { Any } from "cosmjs-types/google/protobuf/any";
+import { QueryClient } from "../../queryclient";
+export interface TxExtension {
+ readonly tx: {
+ getTx: (txId: string) => Promise;
+ simulate: (messages: readonly Any[], memo: string | undefined, signer: Pubkey, sequence: number) => Promise;
+ };
+}
+export declare function setupTxExtension(base: QueryClient): TxExtension;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js
new file mode 100644
index 00000000..3617e389
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js
@@ -0,0 +1,55 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.setupTxExtension = void 0;
+const proto_signing_1 = require("@cosmjs/proto-signing");
+const signing_1 = require("cosmjs-types/cosmos/tx/signing/v1beta1/signing");
+const service_1 = require("cosmjs-types/cosmos/tx/v1beta1/service");
+const tx_1 = require("cosmjs-types/cosmos/tx/v1beta1/tx");
+const long_1 = __importDefault(require("long"));
+const queryclient_1 = require("../../queryclient");
+function setupTxExtension(base) {
+ // Use this service to get easy typed access to query methods
+ // This cannot be used for proof verification
+ const rpc = (0, queryclient_1.createProtobufRpcClient)(base);
+ const queryService = new service_1.ServiceClientImpl(rpc);
+ return {
+ tx: {
+ getTx: async (txId) => {
+ const request = {
+ hash: txId,
+ };
+ const response = await queryService.GetTx(request);
+ return response;
+ },
+ simulate: async (messages, memo, signer, sequence) => {
+ const tx = tx_1.Tx.fromPartial({
+ authInfo: tx_1.AuthInfo.fromPartial({
+ fee: tx_1.Fee.fromPartial({}),
+ signerInfos: [
+ {
+ publicKey: (0, proto_signing_1.encodePubkey)(signer),
+ sequence: long_1.default.fromNumber(sequence, true),
+ modeInfo: { single: { mode: signing_1.SignMode.SIGN_MODE_UNSPECIFIED } },
+ },
+ ],
+ }),
+ body: tx_1.TxBody.fromPartial({
+ messages: Array.from(messages),
+ memo: memo,
+ }),
+ signatures: [new Uint8Array()],
+ });
+ const request = service_1.SimulateRequest.fromPartial({
+ txBytes: tx_1.Tx.encode(tx).finish(),
+ });
+ const response = await queryService.Simulate(request);
+ return response;
+ },
+ },
+ };
+}
+exports.setupTxExtension = setupTxExtension;
+//# sourceMappingURL=queries.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js.map
new file mode 100644
index 00000000..ca865dd7
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/tx/queries.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/modules/tx/queries.ts"],"names":[],"mappings":";;;;;;AACA,yDAAqD;AACrD,4EAA0E;AAC1E,oEAMgD;AAChD,0DAA8E;AAE9E,gDAAwB;AAExB,mDAAyE;AAiBzE,SAAgB,gBAAgB,CAAC,IAAiB;IAChD,6DAA6D;IAC7D,6CAA6C;IAC7C,MAAM,GAAG,GAAG,IAAA,qCAAuB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,2BAAiB,CAAC,GAAG,CAAC,CAAC;IAEhD,OAAO;QACL,EAAE,EAAE;YACF,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC5B,MAAM,OAAO,GAAiB;oBAC5B,IAAI,EAAE,IAAI;iBACX,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnD,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,QAAQ,EAAE,KAAK,EACb,QAAwB,EACxB,IAAwB,EACxB,MAAc,EACd,QAAgB,EAChB,EAAE;gBACF,MAAM,EAAE,GAAG,OAAE,CAAC,WAAW,CAAC;oBACxB,QAAQ,EAAE,aAAQ,CAAC,WAAW,CAAC;wBAC7B,GAAG,EAAE,QAAG,CAAC,WAAW,CAAC,EAAE,CAAC;wBACxB,WAAW,EAAE;4BACX;gCACE,SAAS,EAAE,IAAA,4BAAY,EAAC,MAAM,CAAC;gCAC/B,QAAQ,EAAE,cAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;gCACzC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAQ,CAAC,qBAAqB,EAAE,EAAE;6BAC/D;yBACF;qBACF,CAAC;oBACF,IAAI,EAAE,WAAM,CAAC,WAAW,CAAC;wBACvB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC9B,IAAI,EAAE,IAAI;qBACX,CAAC;oBACF,UAAU,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;iBAC/B,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,yBAAe,CAAC,WAAW,CAAC;oBAC1C,OAAO,EAAE,OAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;iBAChC,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtD,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AA9CD,4CA8CC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.d.ts
new file mode 100644
index 00000000..a3f7e077
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.d.ts
@@ -0,0 +1,16 @@
+import { AminoMsg, Coin } from "@cosmjs/amino";
+import { AminoConverters } from "../../aminotypes";
+export interface AminoMsgCreateVestingAccount extends AminoMsg {
+ readonly type: "cosmos-sdk/MsgCreateVestingAccount";
+ readonly value: {
+ /** Bech32 account address */
+ readonly from_address: string;
+ /** Bech32 account address */
+ readonly to_address: string;
+ readonly amount: readonly Coin[];
+ readonly end_time: string;
+ readonly delayed: boolean;
+ };
+}
+export declare function isAminoMsgCreateVestingAccount(msg: AminoMsg): msg is AminoMsgCreateVestingAccount;
+export declare function createVestingAminoConverters(): AminoConverters;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js
new file mode 100644
index 00000000..64e556dc
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js
@@ -0,0 +1,34 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createVestingAminoConverters = exports.isAminoMsgCreateVestingAccount = void 0;
+const long_1 = __importDefault(require("long"));
+function isAminoMsgCreateVestingAccount(msg) {
+ return msg.type === "cosmos-sdk/MsgCreateVestingAccount";
+}
+exports.isAminoMsgCreateVestingAccount = isAminoMsgCreateVestingAccount;
+function createVestingAminoConverters() {
+ return {
+ "/cosmos.vesting.v1beta1.MsgCreateVestingAccount": {
+ aminoType: "cosmos-sdk/MsgCreateVestingAccount",
+ toAmino: ({ fromAddress, toAddress, amount, endTime, delayed, }) => ({
+ from_address: fromAddress,
+ to_address: toAddress,
+ amount: [...amount],
+ end_time: endTime.toString(),
+ delayed: delayed,
+ }),
+ fromAmino: ({ from_address, to_address, amount, end_time, delayed, }) => ({
+ fromAddress: from_address,
+ toAddress: to_address,
+ amount: [...amount],
+ endTime: long_1.default.fromString(end_time),
+ delayed: delayed,
+ }),
+ },
+ };
+}
+exports.createVestingAminoConverters = createVestingAminoConverters;
+//# sourceMappingURL=aminomessages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js.map
new file mode 100644
index 00000000..282a7187
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"aminomessages.js","sourceRoot":"","sources":["../../../src/modules/vesting/aminomessages.ts"],"names":[],"mappings":";;;;;;AAGA,gDAAwB;AAiBxB,SAAgB,8BAA8B,CAAC,GAAa;IAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,oCAAoC,CAAC;AAC3D,CAAC;AAFD,wEAEC;AAED,SAAgB,4BAA4B;IAC1C,OAAO;QACL,iDAAiD,EAAE;YACjD,SAAS,EAAE,oCAAoC;YAC/C,OAAO,EAAE,CAAC,EACR,WAAW,EACX,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,GACiB,EAAyC,EAAE,CAAC,CAAC;gBACrE,YAAY,EAAE,WAAW;gBACzB,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC5B,OAAO,EAAE,OAAO;aACjB,CAAC;YACF,SAAS,EAAE,CAAC,EACV,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,OAAO,GAC+B,EAA2B,EAAE,CAAC,CAAC;gBACrE,WAAW,EAAE,YAAY;gBACzB,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnB,OAAO,EAAE,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAClC,OAAO,EAAE,OAAO;aACjB,CAAC;SACH;KACF,CAAC;AACJ,CAAC;AAhCD,oEAgCC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.d.ts
new file mode 100644
index 00000000..1a089232
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.d.ts
@@ -0,0 +1,2 @@
+import { GeneratedType } from "@cosmjs/proto-signing";
+export declare const vestingTypes: ReadonlyArray<[string, GeneratedType]>;
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js
new file mode 100644
index 00000000..a8d082da
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.vestingTypes = void 0;
+const tx_1 = require("cosmjs-types/cosmos/vesting/v1beta1/tx");
+exports.vestingTypes = [
+ ["/cosmos.vesting.v1beta1.MsgCreateVestingAccount", tx_1.MsgCreateVestingAccount],
+];
+//# sourceMappingURL=messages.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js.map b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js.map
new file mode 100644
index 00000000..96d49635
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/modules/vesting/messages.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/modules/vesting/messages.ts"],"names":[],"mappings":";;;AACA,+DAAiF;AAEpE,QAAA,YAAY,GAA2C;IAClE,CAAC,iDAAiD,EAAE,4BAAuB,CAAC;CAC7E,CAAC"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.d.ts
new file mode 100644
index 00000000..81c4276f
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.d.ts
@@ -0,0 +1,2 @@
+export { QueryAbciResponse, QueryClient, QueryStoreResponse } from "./queryclient";
+export { createPagination, createProtobufRpcClient, decodeCosmosSdkDecFromProto, longify, ProtobufRpcClient, } from "./utils";
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js
new file mode 100644
index 00000000..23c92f53
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.longify = exports.decodeCosmosSdkDecFromProto = exports.createProtobufRpcClient = exports.createPagination = exports.QueryClient = void 0;
+var queryclient_1 = require("./queryclient");
+Object.defineProperty(exports, "QueryClient", { enumerable: true, get: function () { return queryclient_1.QueryClient; } });
+var utils_1 = require("./utils");
+Object.defineProperty(exports, "createPagination", { enumerable: true, get: function () { return utils_1.createPagination; } });
+Object.defineProperty(exports, "createProtobufRpcClient", { enumerable: true, get: function () { return utils_1.createProtobufRpcClient; } });
+Object.defineProperty(exports, "decodeCosmosSdkDecFromProto", { enumerable: true, get: function () { return utils_1.decodeCosmosSdkDecFromProto; } });
+Object.defineProperty(exports, "longify", { enumerable: true, get: function () { return utils_1.longify; } });
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js.map b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js.map
new file mode 100644
index 00000000..e4b6690a
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queryclient/index.ts"],"names":[],"mappings":";;;AAAA,6CAAmF;AAAvD,0GAAA,WAAW,OAAA;AACvC,iCAMiB;AALf,yGAAA,gBAAgB,OAAA;AAChB,gHAAA,uBAAuB,OAAA;AACvB,oHAAA,2BAA2B,OAAA;AAC3B,gGAAA,OAAO,OAAA"}
\ No newline at end of file
diff --git a/ts-client/node_modules/@cosmjs/stargate/build/queryclient/queryclient.d.ts b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/queryclient.d.ts
new file mode 100644
index 00000000..e2e65c40
--- /dev/null
+++ b/ts-client/node_modules/@cosmjs/stargate/build/queryclient/queryclient.d.ts
@@ -0,0 +1,83 @@
+import { TendermintClient } from "@cosmjs/tendermint-rpc";
+import { ProofOps } from "cosmjs-types/tendermint/crypto/proof";
+type QueryExtensionSetup = (base: QueryClient) => P;
+export interface ProvenQuery {
+ readonly key: Uint8Array;
+ readonly value: Uint8Array;
+ readonly proof: ProofOps;
+ readonly height: number;
+}
+export interface QueryStoreResponse {
+ /** The response key from Tendermint. This is the same as the query key in the request. */
+ readonly key: Uint8Array;
+ readonly value: Uint8Array;
+ readonly height: number;
+}
+/**
+ * The response of an ABCI query to Tendermint.
+ * This is a subset of `tendermint34.AbciQueryResponse` in order
+ * to abstract away Tendermint versions.
+ */
+export interface QueryAbciResponse {
+ readonly value: Uint8Array;
+ readonly height: number;
+}
+export declare class QueryClient {
+ /** Constructs a QueryClient with 0 extensions */
+ static withExtensions(tmClient: TendermintClient): QueryClient;
+ /** Constructs a QueryClient with 1 extension */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup): QueryClient & A;
+ /** Constructs a QueryClient with 2 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup): QueryClient & A & B;
+ /** Constructs a QueryClient with 3 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup): QueryClient & A & B & C;
+ /** Constructs a QueryClient with 4 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup): QueryClient & A & B & C & D;
+ /** Constructs a QueryClient with 5 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup): QueryClient & A & B & C & D & E;
+ /** Constructs a QueryClient with 6 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup): QueryClient & A & B & C & D & E & F;
+ /** Constructs a QueryClient with 7 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G;
+ /** Constructs a QueryClient with 8 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup, setupExtensionH: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G & H;
+ /** Constructs a QueryClient with 9 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup, setupExtensionH: QueryExtensionSetup, setupExtensionI: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G & H & I;
+ /** Constructs a QueryClient with 10 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup, setupExtensionH: QueryExtensionSetup, setupExtensionI: QueryExtensionSetup, setupExtensionJ: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G & H & I & J;
+ /** Constructs a QueryClient with 11 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup, setupExtensionH: QueryExtensionSetup, setupExtensionI: QueryExtensionSetup, setupExtensionJ: QueryExtensionSetup, setupExtensionK: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G & H & I & J & K;
+ /** Constructs a QueryClient with 12 extensions */
+ static withExtensions(tmClient: TendermintClient, setupExtensionA: QueryExtensionSetup, setupExtensionB: QueryExtensionSetup, setupExtensionC: QueryExtensionSetup, setupExtensionD: QueryExtensionSetup, setupExtensionE: QueryExtensionSetup, setupExtensionF: QueryExtensionSetup, setupExtensionG: QueryExtensionSetup, setupExtensionH: QueryExtensionSetup, setupExtensionI: QueryExtensionSetup, setupExtensionJ: QueryExtensionSetup, setupExtensionK: QueryExtensionSetup, setupExtensionL: QueryExtensionSetup): QueryClient & A & B & C & D & E & F & G & H & I & J & K & L;
+ /** Constructs a QueryClient with 13 extensions */
+ static withExtensions