From 60c48d240927b1d7a9c6fe5cf8940e9fcf337034 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 25 Sep 2024 19:45:28 -0400 Subject: [PATCH] feature/did accounts (#23) * feat: add support for DID number as primary key for Controllers * refactor: rename pkg/proxy to app/proxy * feat: add vault module keeper tests * feat(vault): add DID keeper to vault module * refactor: move vault client code to its own package * refactor(vault): extract schema definition * refactor: use vaulttypes for MsgAllocateVault * refactor: update vault assembly logic to use new methods * feat: add dwn-proxy command * refactor: remove unused context.go file * refactor: remove unused web-related code * feat: add DWN proxy server * feat: add BuildTx RPC to vault module * fix: Implement BuildTx endpoint * feat: add devbox integration to project --- .devcontainer/Dockerfile | 15 + .devcontainer/devcontainer.json | 16 + .../testnet-self-hosted.yml.optional | 65 - Makefile | 8 +- api/did/v1/genesis.pulsar.go | 397 +- api/did/v1/query.pulsar.go | 1759 +------- api/did/v1/query_grpc.pb.go | 39 - api/did/v1/state.cosmos_orm.go | 135 +- api/did/v1/state.pulsar.go | 773 ++-- api/did/v1/tx.pulsar.go | 1717 +------- api/did/v1/tx_grpc.pb.go | 65 +- api/vault/module/v1/module.pulsar.go | 499 +++ api/vault/v1/genesis.pulsar.go | 2324 ++++++++++ api/vault/v1/query.pulsar.go | 3881 +++++++++++++++++ api/vault/v1/query_grpc.pb.go | 191 + api/vault/v1/state.cosmos_orm.go | 166 + api/vault/v1/state.pulsar.go | 627 +++ api/vault/v1/tx.pulsar.go | 2388 ++++++++++ api/vault/v1/tx_grpc.pb.go | 158 + app/app.go | 28 +- {internal => app}/cli/dexmodel/dexmodel.go | 0 {internal => app}/cli/tui.go | 13 +- {internal => app}/cli/txmodel/txmodel.go | 0 app/context.go | 23 - app/proxy/command.go | 56 + app/proxy/config.go | 31 + cmd/sonrd/main.go | 7 +- config/pkl/orm.pkl | 4 +- config/pkl/web.pkl | 72 - deploy/Dockerfile | 89 - deploy/air.toml | 50 - deploy/docker-compose.yaml | 30 - devbox.json | 10 +- go.mod | 7 +- go.sum | 2 - internal/orm/bip44.go | 116 - .../AuthenticatorSelectionCriteria.pkl.go | 10 - internal/orm/browser/Browser.pkl.go | 36 - .../PublicKeyCredentialCreationOptions.pkl.go | 22 - .../PublicKeyCredentialDescriptor.pkl.go | 10 - .../PublicKeyCredentialParameters.pkl.go | 8 - .../PublicKeyCredentialRequestOptions.pkl.go | 16 - internal/orm/browser/RpEntity.pkl.go | 10 - internal/orm/browser/SWT.pkl.go | 16 - internal/orm/browser/UserEntity.pkl.go | 10 - internal/orm/browser/init.pkl.go | 16 - internal/orm/constants.go | 334 -- internal/orm/credential.go | 56 - internal/orm/init.pkl.go | 17 - internal/orm/jwk.go | 111 - internal/orm/keyalg.go | 22 - internal/orm/publickey.go | 26 - internal/orm/transactions/Msg.pkl.go | 6 - .../transactions/MsgDidAllocateVault.pkl.go | 44 - .../orm/transactions/MsgDidAuthorize.pkl.go | 60 - .../transactions/MsgDidProveWitness.pkl.go | 52 - .../MsgDidRegisterController.pkl.go | 60 - .../transactions/MsgDidRegisterService.pkl.go | 76 - .../orm/transactions/MsgDidSyncVault.pkl.go | 36 - .../transactions/MsgDidUpdateParams.pkl.go | 44 - .../orm/transactions/MsgGovDeposit.pkl.go | 44 - .../transactions/MsgGovSubmitProposal.pkl.go | 45 - internal/orm/transactions/MsgGovVote.pkl.go | 42 - .../transactions/MsgGroupCreateGroup.pkl.go | 45 - .../MsgGroupSubmitProposal.pkl.go | 60 - internal/orm/transactions/MsgGroupVote.pkl.go | 58 - .../MsgStakingBeginRedelegate.pkl.go | 52 - .../MsgStakingCreateValidator.pkl.go | 77 - .../transactions/MsgStakingDelegate.pkl.go | 44 - .../transactions/MsgStakingUndelegate.pkl.go | 44 - internal/orm/transactions/Proposal.pkl.go | 11 - internal/orm/transactions/Transactions.pkl.go | 36 - internal/orm/transactions/TxBody.pkl.go | 17 - internal/orm/transactions/init.pkl.go | 27 - nebula/README.md | 3 + {pkg/nebula => nebula}/blocks/alert.templ | 0 {pkg/nebula => nebula}/blocks/alert_templ.go | 4 +- {pkg/nebula => nebula}/blocks/badge.templ | 0 {pkg/nebula => nebula}/blocks/badge_templ.go | 0 {pkg/nebula => nebula}/blocks/blocks.go | 0 {pkg/nebula => nebula}/blocks/button.templ | 0 {pkg/nebula => nebula}/blocks/button_templ.go | 16 +- {pkg/nebula => nebula}/blocks/card.templ | 0 {pkg/nebula => nebula}/blocks/card_templ.go | 2 +- {pkg/nebula => nebula}/blocks/fonts.templ | 0 {pkg/nebula => nebula}/blocks/fonts_templ.go | 16 +- {pkg/nebula => nebula}/blocks/global.templ | 0 {pkg/nebula => nebula}/blocks/global_templ.go | 0 {pkg/nebula => nebula}/blocks/icons.templ | 0 {pkg/nebula => nebula}/blocks/icons_templ.go | 0 {pkg/nebula => nebula}/blocks/inputs.templ | 0 {pkg/nebula => nebula}/blocks/inputs_templ.go | 6 +- {pkg/nebula => nebula}/blocks/panel.templ | 0 {pkg/nebula => nebula}/blocks/panel_templ.go | 4 +- {pkg/nebula => nebula}/blocks/radios.templ | 0 {pkg/nebula => nebula}/blocks/radios_templ.go | 0 {pkg/nebula => nebula}/blocks/sizes.templ | 0 {pkg/nebula => nebula}/blocks/sizes_templ.go | 0 {pkg/nebula => nebula}/blocks/tabs.templ | 0 {pkg/nebula => nebula}/blocks/tabs_templ.go | 0 nebula/devbox.json | 24 + nebula/nebula.go | 1 + {pkg/nebula => nebula}/pages/home.templ | 2 +- {pkg/nebula => nebula}/pages/home_templ.go | 2 +- {pkg/nebula => nebula}/pages/login.templ | 2 +- {pkg/nebula => nebula}/pages/login_templ.go | 2 +- {pkg/nebula => nebula}/pages/openid.templ | 2 +- {pkg/nebula => nebula}/pages/openid_templ.go | 2 +- {pkg/nebula => nebula}/pages/pages.go | 0 {pkg/nebula => nebula}/pages/profile.templ | 2 +- {pkg/nebula => nebula}/pages/profile_templ.go | 2 +- {pkg/nebula => nebula}/pages/register.templ | 2 +- .../nebula => nebula}/pages/register_templ.go | 2 +- pkg/nebula/nebula.go | 14 - pkg/nebula/view.go | 27 - pkg/proxy/README.md | 18 - pkg/proxy/main.go | 25 - pkg/proxy/routes/allocate.templ | 18 - pkg/proxy/routes/allocate_templ.go | 75 - pkg/proxy/routes/home.templ | 28 - pkg/proxy/routes/home_templ.go | 139 - pkg/proxy/routes/pages.go | 27 - pkg/proxy/wrangler.toml | 9 - pkg/vault/vault.go | 61 - proto/buf.yaml | 5 +- proto/did/v1/genesis.proto | 13 +- proto/did/v1/query.proto | 23 - proto/did/v1/state.proto | 44 +- proto/did/v1/tx.proto | 59 +- proto/vault/module/v1/module.proto | 13 + proto/vault/v1/genesis.proto | 37 + proto/vault/v1/query.proto | 66 + proto/vault/v1/state.proto | 22 + proto/vault/v1/tx.proto | 74 + x/did/keeper/context.go | 165 - x/did/keeper/controller.go | 27 + x/did/keeper/genesis.go | 38 +- x/did/keeper/keeper.go | 21 +- x/did/keeper/macaroon.go | 29 + x/did/keeper/querier.go | 26 +- x/did/keeper/server.go | 50 +- x/did/types/account.go | 11 + x/did/types/address.go | 55 + x/did/types/codec.go | 35 - x/did/types/controller.go | 101 + x/did/types/genesis.go | 35 +- x/did/types/genesis.pb.go | 226 +- x/did/types/msgs.go | 33 - {internal => x/did/types}/orm/Account.pkl.go | 2 +- {internal => x/did/types}/orm/Asset.pkl.go | 2 +- {internal => x/did/types}/orm/Chain.pkl.go | 2 +- .../did/types}/orm/Credential.pkl.go | 2 +- {internal => x/did/types}/orm/Grant.pkl.go | 2 +- {internal => x/did/types}/orm/JWK.pkl.go | 2 +- {internal => x/did/types}/orm/Keyshare.pkl.go | 2 +- .../did/types/orm/Models.pkl.go | 14 +- {internal => x/did/types}/orm/Profile.pkl.go | 2 +- .../did/types}/orm/PublicKey.pkl.go | 12 +- .../did/types}/orm/assettype/AssetType.pkl.go | 2 +- .../did/types}/orm/didmethod/DIDMethod.pkl.go | 2 +- x/did/types/orm/init.pkl.go | 17 + .../orm/keyalgorithm/KeyAlgorithm.pkl.go | 2 +- .../did/types}/orm/keycurve/KeyCurve.pkl.go | 2 +- .../types}/orm/keyencoding/KeyEncoding.pkl.go | 2 +- .../did/types}/orm/keyrole/KeyRole.pkl.go | 2 +- .../orm/keysharerole/KeyShareRole.pkl.go | 2 +- .../did/types}/orm/keytype/KeyType.pkl.go | 2 +- .../permissiongrant/PermissionGrant.pkl.go | 2 +- .../permissionscope/PermissionScope.pkl.go | 2 +- x/did/types/query.pb.go | 759 +--- x/did/types/query.pb.gw.go | 83 - x/did/types/state.pb.go | 384 +- x/did/types/tx.pb.go | 788 +--- x/vault/README.md | 15 + x/vault/autocli.go | 31 + x/vault/client/cli/query.go | 50 + x/vault/client/cli/tx.go | 71 + {internal => x/vault/client}/dwn/main.go | 12 +- .../vault/client}/dwn/middleware/headers.go | 0 .../client}/dwn/middleware/middleware.go | 0 .../vault/client}/dwn/middleware/session.go | 0 .../vault/client}/dwn/middleware/token.go | 0 .../vault/client}/dwn/state/auth.go | 0 .../vault/client}/dwn/state/manifest.go | 0 .../vault/client}/dwn/state/openid.go | 0 .../vault/client}/dwn/state/routes.go | 2 +- .../vault/client}/dwn/state/views.go | 0 .../vault/client}/dwn/state/wellknown.go | 0 x/vault/depinject.go | 65 + {pkg/vault => x/vault/internal}/app.wasm | Bin 9705240 -> 9701630 bytes {pkg/vault => x/vault/internal}/embed.go | 0 {pkg/vault => x/vault/internal}/index.templ | 0 .../vault => x/vault/internal}/index_templ.go | 0 {pkg/vault => x/vault/internal}/motr.mjs | 0 {pkg/vault => x/vault/internal}/sw.js | 0 x/vault/keeper/assembly.go | 59 + x/vault/keeper/genesis_test.go | 25 + x/vault/keeper/keeper.go | 154 + x/vault/keeper/keeper_test.go | 144 + x/vault/keeper/orm_test.go | 31 + x/vault/keeper/querier.go | 42 + x/vault/keeper/server.go | 48 + x/vault/keeper/server_test.go | 56 + x/vault/module.go | 152 + x/vault/types/codec.go | 39 + x/vault/types/genesis.go | 59 + x/vault/types/genesis.pb.go | 1242 ++++++ x/vault/types/genesis_test.go | 42 + x/vault/types/keys.go | 27 + x/vault/types/msgs.go | 80 + x/vault/types/params.go | 46 + x/vault/types/query.pb.go | 1676 +++++++ x/vault/types/query.pb.gw.go | 319 ++ x/vault/types/state.pb.go | 355 ++ x/vault/types/tx.pb.go | 1231 ++++++ x/vault/types/vault.go | 22 + 216 files changed, 18162 insertions(+), 9232 deletions(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json delete mode 100644 .github/workflows/testnet-self-hosted.yml.optional create mode 100644 api/vault/module/v1/module.pulsar.go create mode 100644 api/vault/v1/genesis.pulsar.go create mode 100644 api/vault/v1/query.pulsar.go create mode 100644 api/vault/v1/query_grpc.pb.go create mode 100644 api/vault/v1/state.cosmos_orm.go create mode 100644 api/vault/v1/state.pulsar.go create mode 100644 api/vault/v1/tx.pulsar.go create mode 100644 api/vault/v1/tx_grpc.pb.go rename {internal => app}/cli/dexmodel/dexmodel.go (100%) rename {internal => app}/cli/tui.go (74%) rename {internal => app}/cli/txmodel/txmodel.go (100%) delete mode 100644 app/context.go create mode 100644 app/proxy/command.go create mode 100644 app/proxy/config.go delete mode 100644 config/pkl/web.pkl delete mode 100644 deploy/Dockerfile delete mode 100644 deploy/air.toml delete mode 100644 deploy/docker-compose.yaml delete mode 100644 internal/orm/bip44.go delete mode 100644 internal/orm/browser/AuthenticatorSelectionCriteria.pkl.go delete mode 100644 internal/orm/browser/Browser.pkl.go delete mode 100644 internal/orm/browser/PublicKeyCredentialCreationOptions.pkl.go delete mode 100644 internal/orm/browser/PublicKeyCredentialDescriptor.pkl.go delete mode 100644 internal/orm/browser/PublicKeyCredentialParameters.pkl.go delete mode 100644 internal/orm/browser/PublicKeyCredentialRequestOptions.pkl.go delete mode 100644 internal/orm/browser/RpEntity.pkl.go delete mode 100644 internal/orm/browser/SWT.pkl.go delete mode 100644 internal/orm/browser/UserEntity.pkl.go delete mode 100644 internal/orm/browser/init.pkl.go delete mode 100644 internal/orm/constants.go delete mode 100644 internal/orm/credential.go delete mode 100644 internal/orm/init.pkl.go delete mode 100644 internal/orm/jwk.go delete mode 100644 internal/orm/keyalg.go delete mode 100644 internal/orm/publickey.go delete mode 100644 internal/orm/transactions/Msg.pkl.go delete mode 100644 internal/orm/transactions/MsgDidAllocateVault.pkl.go delete mode 100644 internal/orm/transactions/MsgDidAuthorize.pkl.go delete mode 100644 internal/orm/transactions/MsgDidProveWitness.pkl.go delete mode 100644 internal/orm/transactions/MsgDidRegisterController.pkl.go delete mode 100644 internal/orm/transactions/MsgDidRegisterService.pkl.go delete mode 100644 internal/orm/transactions/MsgDidSyncVault.pkl.go delete mode 100644 internal/orm/transactions/MsgDidUpdateParams.pkl.go delete mode 100644 internal/orm/transactions/MsgGovDeposit.pkl.go delete mode 100644 internal/orm/transactions/MsgGovSubmitProposal.pkl.go delete mode 100644 internal/orm/transactions/MsgGovVote.pkl.go delete mode 100644 internal/orm/transactions/MsgGroupCreateGroup.pkl.go delete mode 100644 internal/orm/transactions/MsgGroupSubmitProposal.pkl.go delete mode 100644 internal/orm/transactions/MsgGroupVote.pkl.go delete mode 100644 internal/orm/transactions/MsgStakingBeginRedelegate.pkl.go delete mode 100644 internal/orm/transactions/MsgStakingCreateValidator.pkl.go delete mode 100644 internal/orm/transactions/MsgStakingDelegate.pkl.go delete mode 100644 internal/orm/transactions/MsgStakingUndelegate.pkl.go delete mode 100644 internal/orm/transactions/Proposal.pkl.go delete mode 100644 internal/orm/transactions/Transactions.pkl.go delete mode 100644 internal/orm/transactions/TxBody.pkl.go delete mode 100644 internal/orm/transactions/init.pkl.go create mode 100644 nebula/README.md rename {pkg/nebula => nebula}/blocks/alert.templ (100%) rename {pkg/nebula => nebula}/blocks/alert_templ.go (96%) rename {pkg/nebula => nebula}/blocks/badge.templ (100%) rename {pkg/nebula => nebula}/blocks/badge_templ.go (100%) rename {pkg/nebula => nebula}/blocks/blocks.go (100%) rename {pkg/nebula => nebula}/blocks/button.templ (100%) rename {pkg/nebula => nebula}/blocks/button_templ.go (94%) rename {pkg/nebula => nebula}/blocks/card.templ (100%) rename {pkg/nebula => nebula}/blocks/card_templ.go (98%) rename {pkg/nebula => nebula}/blocks/fonts.templ (100%) rename {pkg/nebula => nebula}/blocks/fonts_templ.go (92%) rename {pkg/nebula => nebula}/blocks/global.templ (100%) rename {pkg/nebula => nebula}/blocks/global_templ.go (100%) rename {pkg/nebula => nebula}/blocks/icons.templ (100%) rename {pkg/nebula => nebula}/blocks/icons_templ.go (100%) rename {pkg/nebula => nebula}/blocks/inputs.templ (100%) rename {pkg/nebula => nebula}/blocks/inputs_templ.go (93%) rename {pkg/nebula => nebula}/blocks/panel.templ (100%) rename {pkg/nebula => nebula}/blocks/panel_templ.go (97%) rename {pkg/nebula => nebula}/blocks/radios.templ (100%) rename {pkg/nebula => nebula}/blocks/radios_templ.go (100%) rename {pkg/nebula => nebula}/blocks/sizes.templ (100%) rename {pkg/nebula => nebula}/blocks/sizes_templ.go (100%) rename {pkg/nebula => nebula}/blocks/tabs.templ (100%) rename {pkg/nebula => nebula}/blocks/tabs_templ.go (100%) create mode 100644 nebula/devbox.json create mode 100644 nebula/nebula.go rename {pkg/nebula => nebula}/pages/home.templ (93%) rename {pkg/nebula => nebula}/pages/home_templ.go (99%) rename {pkg/nebula => nebula}/pages/login.templ (90%) rename {pkg/nebula => nebula}/pages/login_templ.go (99%) rename {pkg/nebula => nebula}/pages/openid.templ (87%) rename {pkg/nebula => nebula}/pages/openid_templ.go (98%) rename {pkg/nebula => nebula}/pages/pages.go (100%) rename {pkg/nebula => nebula}/pages/profile.templ (85%) rename {pkg/nebula => nebula}/pages/profile_templ.go (98%) rename {pkg/nebula => nebula}/pages/register.templ (97%) rename {pkg/nebula => nebula}/pages/register_templ.go (99%) delete mode 100644 pkg/nebula/nebula.go delete mode 100644 pkg/nebula/view.go delete mode 100644 pkg/proxy/README.md delete mode 100644 pkg/proxy/main.go delete mode 100644 pkg/proxy/routes/allocate.templ delete mode 100644 pkg/proxy/routes/allocate_templ.go delete mode 100644 pkg/proxy/routes/home.templ delete mode 100644 pkg/proxy/routes/home_templ.go delete mode 100644 pkg/proxy/routes/pages.go delete mode 100644 pkg/proxy/wrangler.toml delete mode 100644 pkg/vault/vault.go create mode 100644 proto/vault/module/v1/module.proto create mode 100644 proto/vault/v1/genesis.proto create mode 100644 proto/vault/v1/query.proto create mode 100644 proto/vault/v1/state.proto create mode 100644 proto/vault/v1/tx.proto delete mode 100644 x/did/keeper/context.go create mode 100644 x/did/keeper/controller.go create mode 100644 x/did/keeper/macaroon.go create mode 100644 x/did/types/controller.go rename {internal => x/did/types}/orm/Account.pkl.go (89%) rename {internal => x/did/types}/orm/Asset.pkl.go (86%) rename {internal => x/did/types}/orm/Chain.pkl.go (85%) rename {internal => x/did/types}/orm/Credential.pkl.go (95%) rename {internal => x/did/types}/orm/Grant.pkl.go (89%) rename {internal => x/did/types}/orm/JWK.pkl.go (83%) rename {internal => x/did/types}/orm/Keyshare.pkl.go (85%) rename internal/orm/Orm.pkl.go => x/did/types/orm/Models.pkl.go (72%) rename {internal => x/did/types}/orm/Profile.pkl.go (90%) rename {internal => x/did/types}/orm/PublicKey.pkl.go (53%) rename {internal => x/did/types}/orm/assettype/AssetType.pkl.go (93%) rename {internal => x/did/types}/orm/didmethod/DIDMethod.pkl.go (94%) create mode 100644 x/did/types/orm/init.pkl.go rename {internal => x/did/types}/orm/keyalgorithm/KeyAlgorithm.pkl.go (94%) rename {internal => x/did/types}/orm/keycurve/KeyCurve.pkl.go (95%) rename {internal => x/did/types}/orm/keyencoding/KeyEncoding.pkl.go (92%) rename {internal => x/did/types}/orm/keyrole/KeyRole.pkl.go (93%) rename {internal => x/did/types}/orm/keysharerole/KeyShareRole.pkl.go (92%) rename {internal => x/did/types}/orm/keytype/KeyType.pkl.go (94%) rename {internal => x/did/types}/orm/permissiongrant/PermissionGrant.pkl.go (94%) rename {internal => x/did/types}/orm/permissionscope/PermissionScope.pkl.go (95%) create mode 100644 x/vault/README.md create mode 100644 x/vault/autocli.go create mode 100644 x/vault/client/cli/query.go create mode 100644 x/vault/client/cli/tx.go rename {internal => x/vault/client}/dwn/main.go (90%) rename {internal => x/vault/client}/dwn/middleware/headers.go (100%) rename {internal => x/vault/client}/dwn/middleware/middleware.go (100%) rename {internal => x/vault/client}/dwn/middleware/session.go (100%) rename {internal => x/vault/client}/dwn/middleware/token.go (100%) rename {internal => x/vault/client}/dwn/state/auth.go (100%) rename {internal => x/vault/client}/dwn/state/manifest.go (100%) rename {internal => x/vault/client}/dwn/state/openid.go (100%) rename {internal => x/vault/client}/dwn/state/routes.go (89%) rename {internal => x/vault/client}/dwn/state/views.go (100%) rename {internal => x/vault/client}/dwn/state/wellknown.go (100%) create mode 100644 x/vault/depinject.go rename {pkg/vault => x/vault/internal}/app.wasm (77%) rename {pkg/vault => x/vault/internal}/embed.go (100%) rename {pkg/vault => x/vault/internal}/index.templ (100%) rename {pkg/vault => x/vault/internal}/index_templ.go (100%) rename {pkg/vault => x/vault/internal}/motr.mjs (100%) rename {pkg/vault => x/vault/internal}/sw.js (100%) create mode 100644 x/vault/keeper/assembly.go create mode 100644 x/vault/keeper/genesis_test.go create mode 100644 x/vault/keeper/keeper.go create mode 100644 x/vault/keeper/keeper_test.go create mode 100644 x/vault/keeper/orm_test.go create mode 100644 x/vault/keeper/querier.go create mode 100644 x/vault/keeper/server.go create mode 100644 x/vault/keeper/server_test.go create mode 100644 x/vault/module.go create mode 100644 x/vault/types/codec.go create mode 100644 x/vault/types/genesis.go create mode 100644 x/vault/types/genesis.pb.go create mode 100644 x/vault/types/genesis_test.go create mode 100644 x/vault/types/keys.go create mode 100644 x/vault/types/msgs.go create mode 100644 x/vault/types/params.go create mode 100644 x/vault/types/query.pb.go create mode 100644 x/vault/types/query.pb.gw.go create mode 100644 x/vault/types/state.pb.go create mode 100644 x/vault/types/tx.pb.go create mode 100644 x/vault/types/vault.go diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..daf54b777 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,15 @@ +FROM jetpackio/devbox:latest + +# Installing your devbox project +WORKDIR /code +USER root:root +RUN mkdir -p /code && chown ${DEVBOX_USER}:${DEVBOX_USER} /code +USER ${DEVBOX_USER}:${DEVBOX_USER} +COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.json devbox.json +COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.lock devbox.lock + + + +RUN devbox run -- echo "Installed Packages." + +RUN devbox shellenv --init-hook >> ~/.profile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..e7ae9f11f --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,16 @@ +{ + "name": "Devbox Remote Container", + "build": { + "dockerfile": "./Dockerfile", + "context": ".." + }, + "customizations": { + "vscode": { + "settings": {}, + "extensions": [ + "jetpack-io.devbox" + ] + } + }, + "remoteUser": "devbox" +} \ No newline at end of file diff --git a/.github/workflows/testnet-self-hosted.yml.optional b/.github/workflows/testnet-self-hosted.yml.optional deleted file mode 100644 index c1ea3cf56..000000000 --- a/.github/workflows/testnet-self-hosted.yml.optional +++ /dev/null @@ -1,65 +0,0 @@ -name: self-hosted testnet - -# -# Setup a runner on your own hardware or in a public cloud like GCP, Hetzner, etc. -# This is required if your chain is closed source but you want a dev/semi-public testnet -# - https://github.com///settings/actions/runners/new?arch=x64&os=linux -# - -on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+' # ignore rc - -env: - GO_VERSION: 1.21.0 - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - LOCALIC_PORT: 8080 - LOCALIC_AUTH_KEY: "" - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - launch-testnet: - runs-on: self-hosted - steps: - - uses: actions/checkout@v3 - - - name: Setup System - run: | - sudo apt-get update - sudo DEBIAN_FRONTEND=noninteractive apt -y install make gcc jq bison ca-certificates curl - - wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz - sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz - echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc - export PATH=$PATH:/usr/local/go/bin - - sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y containerd.io || true - sudo DEBIAN_FRONTEND=noninteractive apt-get -y install docker.io docker-compose - sudo apt-get update - - wget https://github.com/strangelove-ventures/interchaintest/releases/download/v8.2.0/local-ic && chmod +x local-ic - sudo mv local-ic /usr/local/bin - - git clone https://github.com/strangelove-ventures/heighliner.git && cd heighliner - go build && chmod +x heighliner - sudo mv heighliner /usr/local/bin - cd .. && rm -rf heighliner - - - name: Build + Run Testnet - run: | - killall local-ic || true - docker kill $(docker ps -q) || true - - export PATH=$PATH:/usr/local/go/bin - - make local-image - - sudo screen -S testnet-${{ github.ref_name }} -d -m local-ic start ibc-testnet --api-address=0.0.0.0 --api-port=${{ env.LOCALIC_PORT }} --auth-key=${{ env.LOCALIC_AUTH_KEY }} - - # Add other commands here you perform for setup once local-ic has started (poll on LOCALIC_PORT) such as contract upload. - diff --git a/Makefile b/Makefile index 99733b555..80290c607 100644 --- a/Makefile +++ b/Makefile @@ -301,11 +301,7 @@ sh-testnet: mod-tidy dwn: @echo "(dwn) Building dwn.wasm -> IPFS Vault" - GOOS=js GOARCH=wasm go build -o ./pkg/vault/app.wasm ./internal/dwn/main.go - -motr: - @echo "(web) Building app.wasm -> Deploy to Cloudflare Workers" - GOOS=js GOARCH=wasm go build -o ./pkg/proxy/build/app.wasm ./pkg/proxy/main.go + GOOS=js GOARCH=wasm go build -o ./x/vault/internal/app.wasm ./x/vault/client/dwn/main.go templ: @echo "(templ) Generating templ files" @@ -316,8 +312,6 @@ pkl: @echo "(pkl) Building PKL" go run github.com/apple/pkl-go/cmd/pkl-gen-go ./config/pkl/dwn.pkl go run github.com/apple/pkl-go/cmd/pkl-gen-go ./config/pkl/orm.pkl - go run github.com/apple/pkl-go/cmd/pkl-gen-go ./config/pkl/web.pkl - go run github.com/apple/pkl-go/cmd/pkl-gen-go ./config/pkl/txns.pkl air: @echo "(air) Building air" diff --git a/api/did/v1/genesis.pulsar.go b/api/did/v1/genesis.pulsar.go index 2185cd597..e8adfa436 100644 --- a/api/did/v1/genesis.pulsar.go +++ b/api/did/v1/genesis.pulsar.go @@ -591,60 +591,58 @@ func (x *_Params_2_map) IsValid() bool { return x.m != nil } -var _ protoreflect.List = (*_Params_6_list)(nil) +var _ protoreflect.List = (*_Params_4_list)(nil) -type _Params_6_list struct { +type _Params_4_list struct { list *[]string } -func (x *_Params_6_list) Len() int { +func (x *_Params_4_list) Len() int { if x.list == nil { return 0 } return len(*x.list) } -func (x *_Params_6_list) Get(i int) protoreflect.Value { +func (x *_Params_4_list) Get(i int) protoreflect.Value { return protoreflect.ValueOfString((*x.list)[i]) } -func (x *_Params_6_list) Set(i int, value protoreflect.Value) { +func (x *_Params_4_list) Set(i int, value protoreflect.Value) { valueUnwrapped := value.String() concreteValue := valueUnwrapped (*x.list)[i] = concreteValue } -func (x *_Params_6_list) Append(value protoreflect.Value) { +func (x *_Params_4_list) Append(value protoreflect.Value) { valueUnwrapped := value.String() concreteValue := valueUnwrapped *x.list = append(*x.list, concreteValue) } -func (x *_Params_6_list) AppendMutable() protoreflect.Value { +func (x *_Params_4_list) AppendMutable() protoreflect.Value { panic(fmt.Errorf("AppendMutable can not be called on message Params at list field AttestationFormats as it is not of Message kind")) } -func (x *_Params_6_list) Truncate(n int) { +func (x *_Params_4_list) Truncate(n int) { *x.list = (*x.list)[:n] } -func (x *_Params_6_list) NewElement() protoreflect.Value { +func (x *_Params_4_list) NewElement() protoreflect.Value { v := "" return protoreflect.ValueOfString(v) } -func (x *_Params_6_list) IsValid() bool { +func (x *_Params_4_list) IsValid() bool { return x.list != nil } var ( - md_Params protoreflect.MessageDescriptor - fd_Params_whitelisted_assets protoreflect.FieldDescriptor - fd_Params_allowed_public_keys protoreflect.FieldDescriptor - fd_Params_ipfs_active protoreflect.FieldDescriptor - fd_Params_localhost_registration_enabled protoreflect.FieldDescriptor - fd_Params_conveyance_preference protoreflect.FieldDescriptor - fd_Params_attestation_formats protoreflect.FieldDescriptor + md_Params protoreflect.MessageDescriptor + fd_Params_whitelisted_assets protoreflect.FieldDescriptor + fd_Params_allowed_public_keys protoreflect.FieldDescriptor + fd_Params_conveyance_preference protoreflect.FieldDescriptor + fd_Params_attestation_formats protoreflect.FieldDescriptor ) func init() { @@ -652,8 +650,6 @@ func init() { md_Params = File_did_v1_genesis_proto.Messages().ByName("Params") fd_Params_whitelisted_assets = md_Params.Fields().ByName("whitelisted_assets") fd_Params_allowed_public_keys = md_Params.Fields().ByName("allowed_public_keys") - fd_Params_ipfs_active = md_Params.Fields().ByName("ipfs_active") - fd_Params_localhost_registration_enabled = md_Params.Fields().ByName("localhost_registration_enabled") fd_Params_conveyance_preference = md_Params.Fields().ByName("conveyance_preference") fd_Params_attestation_formats = md_Params.Fields().ByName("attestation_formats") } @@ -735,18 +731,6 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } - if x.IpfsActive != false { - value := protoreflect.ValueOfBool(x.IpfsActive) - if !f(fd_Params_ipfs_active, value) { - return - } - } - if x.LocalhostRegistrationEnabled != false { - value := protoreflect.ValueOfBool(x.LocalhostRegistrationEnabled) - if !f(fd_Params_localhost_registration_enabled, value) { - return - } - } if x.ConveyancePreference != "" { value := protoreflect.ValueOfString(x.ConveyancePreference) if !f(fd_Params_conveyance_preference, value) { @@ -754,7 +738,7 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto } } if len(x.AttestationFormats) != 0 { - value := protoreflect.ValueOfList(&_Params_6_list{list: &x.AttestationFormats}) + value := protoreflect.ValueOfList(&_Params_4_list{list: &x.AttestationFormats}) if !f(fd_Params_attestation_formats, value) { return } @@ -778,10 +762,6 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return len(x.WhitelistedAssets) != 0 case "did.v1.Params.allowed_public_keys": return len(x.AllowedPublicKeys) != 0 - case "did.v1.Params.ipfs_active": - return x.IpfsActive != false - case "did.v1.Params.localhost_registration_enabled": - return x.LocalhostRegistrationEnabled != false case "did.v1.Params.conveyance_preference": return x.ConveyancePreference != "" case "did.v1.Params.attestation_formats": @@ -806,10 +786,6 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.WhitelistedAssets = nil case "did.v1.Params.allowed_public_keys": x.AllowedPublicKeys = nil - case "did.v1.Params.ipfs_active": - x.IpfsActive = false - case "did.v1.Params.localhost_registration_enabled": - x.LocalhostRegistrationEnabled = false case "did.v1.Params.conveyance_preference": x.ConveyancePreference = "" case "did.v1.Params.attestation_formats": @@ -842,20 +818,14 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro } mapValue := &_Params_2_map{m: &x.AllowedPublicKeys} return protoreflect.ValueOfMap(mapValue) - case "did.v1.Params.ipfs_active": - value := x.IpfsActive - return protoreflect.ValueOfBool(value) - case "did.v1.Params.localhost_registration_enabled": - value := x.LocalhostRegistrationEnabled - return protoreflect.ValueOfBool(value) case "did.v1.Params.conveyance_preference": value := x.ConveyancePreference return protoreflect.ValueOfString(value) case "did.v1.Params.attestation_formats": if len(x.AttestationFormats) == 0 { - return protoreflect.ValueOfList(&_Params_6_list{}) + return protoreflect.ValueOfList(&_Params_4_list{}) } - listValue := &_Params_6_list{list: &x.AttestationFormats} + listValue := &_Params_4_list{list: &x.AttestationFormats} return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { @@ -885,15 +855,11 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto mv := value.Map() cmv := mv.(*_Params_2_map) x.AllowedPublicKeys = *cmv.m - case "did.v1.Params.ipfs_active": - x.IpfsActive = value.Bool() - case "did.v1.Params.localhost_registration_enabled": - x.LocalhostRegistrationEnabled = value.Bool() case "did.v1.Params.conveyance_preference": x.ConveyancePreference = value.Interface().(string) case "did.v1.Params.attestation_formats": lv := value.List() - clv := lv.(*_Params_6_list) + clv := lv.(*_Params_4_list) x.AttestationFormats = *clv.list default: if fd.IsExtension() { @@ -931,12 +897,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore if x.AttestationFormats == nil { x.AttestationFormats = []string{} } - value := &_Params_6_list{list: &x.AttestationFormats} + value := &_Params_4_list{list: &x.AttestationFormats} return protoreflect.ValueOfList(value) - case "did.v1.Params.ipfs_active": - panic(fmt.Errorf("field ipfs_active of message did.v1.Params is not mutable")) - case "did.v1.Params.localhost_registration_enabled": - panic(fmt.Errorf("field localhost_registration_enabled of message did.v1.Params is not mutable")) case "did.v1.Params.conveyance_preference": panic(fmt.Errorf("field conveyance_preference of message did.v1.Params is not mutable")) default: @@ -958,15 +920,11 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor case "did.v1.Params.allowed_public_keys": m := make(map[string]*KeyInfo) return protoreflect.ValueOfMap(&_Params_2_map{m: &m}) - case "did.v1.Params.ipfs_active": - return protoreflect.ValueOfBool(false) - case "did.v1.Params.localhost_registration_enabled": - return protoreflect.ValueOfBool(false) case "did.v1.Params.conveyance_preference": return protoreflect.ValueOfString("") case "did.v1.Params.attestation_formats": list := []string{} - return protoreflect.ValueOfList(&_Params_6_list{list: &list}) + return protoreflect.ValueOfList(&_Params_4_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Params")) @@ -1068,12 +1026,6 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } } } - if x.IpfsActive { - n += 2 - } - if x.LocalhostRegistrationEnabled { - n += 2 - } l = len(x.ConveyancePreference) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) @@ -1119,7 +1071,7 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], x.AttestationFormats[iNdEx]) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AttestationFormats[iNdEx]))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x22 } } if len(x.ConveyancePreference) > 0 { @@ -1127,27 +1079,7 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], x.ConveyancePreference) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ConveyancePreference))) i-- - dAtA[i] = 0x2a - } - if x.LocalhostRegistrationEnabled { - i-- - if x.LocalhostRegistrationEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if x.IpfsActive { - i-- - if x.IpfsActive { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x18 + dAtA[i] = 0x1a } if len(x.AllowedPublicKeys) > 0 { MaRsHaLmAp := func(k string, v *KeyInfo) (protoiface.MarshalOutput, error) { @@ -1428,46 +1360,6 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { x.AllowedPublicKeys[mapkey] = mapvalue iNdEx = postIndex case 3: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IpfsActive", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.IpfsActive = bool(v != 0) - case 4: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LocalhostRegistrationEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.LocalhostRegistrationEnabled = bool(v != 0) - case 5: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ConveyancePreference", wireType) } @@ -1499,7 +1391,7 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.ConveyancePreference = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AttestationFormats", wireType) } @@ -6975,14 +6867,10 @@ type Params struct { WhitelistedAssets []*AssetInfo `protobuf:"bytes,1,rep,name=whitelisted_assets,json=whitelistedAssets,proto3" json:"whitelisted_assets,omitempty"` // Whitelisted Key Types AllowedPublicKeys map[string]*KeyInfo `protobuf:"bytes,2,rep,name=allowed_public_keys,json=allowedPublicKeys,proto3" json:"allowed_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // IpfsActive is a flag to enable/disable ipfs - IpfsActive bool `protobuf:"varint,3,opt,name=ipfs_active,json=ipfsActive,proto3" json:"ipfs_active,omitempty"` - // Localhost Registration Enabled - LocalhostRegistrationEnabled bool `protobuf:"varint,4,opt,name=localhost_registration_enabled,json=localhostRegistrationEnabled,proto3" json:"localhost_registration_enabled,omitempty"` // ConveyancePreference defines the conveyance preference - ConveyancePreference string `protobuf:"bytes,5,opt,name=conveyance_preference,json=conveyancePreference,proto3" json:"conveyance_preference,omitempty"` + ConveyancePreference string `protobuf:"bytes,3,opt,name=conveyance_preference,json=conveyancePreference,proto3" json:"conveyance_preference,omitempty"` // AttestationFormats defines the attestation formats - AttestationFormats []string `protobuf:"bytes,6,rep,name=attestation_formats,json=attestationFormats,proto3" json:"attestation_formats,omitempty"` + AttestationFormats []string `protobuf:"bytes,4,rep,name=attestation_formats,json=attestationFormats,proto3" json:"attestation_formats,omitempty"` } func (x *Params) Reset() { @@ -7019,20 +6907,6 @@ func (x *Params) GetAllowedPublicKeys() map[string]*KeyInfo { return nil } -func (x *Params) GetIpfsActive() bool { - if x != nil { - return x.IpfsActive - } - return false -} - -func (x *Params) GetLocalhostRegistrationEnabled() bool { - if x != nil { - return x.LocalhostRegistrationEnabled - } - return false -} - func (x *Params) GetConveyancePreference() string { if x != nil { return x.ConveyancePreference @@ -7222,8 +7096,9 @@ type KeyInfo struct { Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` Algorithm string `protobuf:"bytes,2,opt,name=algorithm,proto3" json:"algorithm,omitempty"` // e.g., "ES256", "EdDSA", "ES256K" Encoding string `protobuf:"bytes,3,opt,name=encoding,proto3" json:"encoding,omitempty"` // e.g., "hex", "base64", "multibase" - Curve string `protobuf:"bytes,4,opt,name=curve,proto3" json:"curve,omitempty"` // e.g., "P256", "P384", "P521", "X25519", "X448", "Ed25519", "Ed448", "secp256k1" - Type_ string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` // e.g., "Octet", "Elliptic", "RSA", "Symmetric", "HMAC" + Curve string `protobuf:"bytes,4,opt,name=curve,proto3" json:"curve,omitempty"` // e.g., "P256", "P384", "P521", "X25519", "X448", + // "Ed25519", "Ed448", "secp256k1" + Type_ string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` // e.g., "Octet", "Elliptic", "RSA", "Symmetric", "HMAC" } func (x *KeyInfo) Reset() { @@ -7536,7 +7411,7 @@ var file_did_v1_genesis_proto_rawDesc = []byte{ 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xde, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xf7, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, @@ -7546,116 +7421,110 @@ var file_did_v1_genesis_proto_rawDesc = []byte{ 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x70, 0x66, - 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x69, 0x70, 0x66, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x44, 0x0a, 0x1e, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x79, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x79, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x12, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x16, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x79, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x79, + 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2f, + 0x0a, 0x13, 0x61, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x1a, + 0x55, 0x0a, 0x16, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x4b, 0x65, 0x79, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x17, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, + 0x8a, 0xe7, 0xb0, 0x2a, 0x0a, 0x64, 0x69, 0x64, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, + 0x99, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x72, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x68, 0x72, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x91, 0x02, 0x0a, 0x08, + 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x29, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x73, 0x73, 0x65, + 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x63, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x33, 0x0a, 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, + 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x14, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, + 0x81, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x75, 0x72, + 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x75, 0x72, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x75, 0x72, + 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, + 0x24, 0x0a, 0x03, 0x6a, 0x77, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x64, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x2e, 0x4a, 0x57, 0x4b, + 0x52, 0x03, 0x6a, 0x77, 0x6b, 0x1a, 0x61, 0x0a, 0x03, 0x4a, 0x57, 0x4b, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x74, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x63, 0x72, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x72, 0x76, + 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x78, 0x12, 0x0c, + 0x0a, 0x01, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x79, 0x12, 0x0c, 0x0a, 0x01, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x22, 0xb1, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x52, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x17, 0x98, - 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x0a, 0x64, 0x69, 0x64, 0x2f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x72, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x68, 0x72, 0x70, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, - 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x63, 0x6f, 0x6e, 0x55, - 0x72, 0x6c, 0x22, 0x91, 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, - 0x26, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x65, 0x72, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x06, 0x50, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x63, 0x75, 0x72, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x24, 0x0a, 0x03, 0x6a, 0x77, 0x6b, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, - 0x4b, 0x65, 0x79, 0x2e, 0x4a, 0x57, 0x4b, 0x52, 0x03, 0x6a, 0x77, 0x6b, 0x1a, 0x61, 0x0a, 0x03, - 0x4a, 0x57, 0x4b, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x72, 0x76, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x72, 0x76, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x01, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, - 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x65, 0x22, - 0xb1, 0x03, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0b, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x43, - 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x42, 0x7c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, - 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, - 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, - 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x7c, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, + 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, + 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, + 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, + 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/api/did/v1/query.pulsar.go b/api/did/v1/query.pulsar.go index 1a3a88011..a41f9f858 100644 --- a/api/did/v1/query.pulsar.go +++ b/api/did/v1/query.pulsar.go @@ -625,638 +625,6 @@ func (x *fastReflection_QueryRequest) ProtoMethods() *protoiface.Methods { } } -var ( - md_QueryResponse protoreflect.MessageDescriptor - fd_QueryResponse_success protoreflect.FieldDescriptor - fd_QueryResponse_query protoreflect.FieldDescriptor - fd_QueryResponse_document protoreflect.FieldDescriptor - fd_QueryResponse_params protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_QueryResponse = File_did_v1_query_proto.Messages().ByName("QueryResponse") - fd_QueryResponse_success = md_QueryResponse.Fields().ByName("success") - fd_QueryResponse_query = md_QueryResponse.Fields().ByName("query") - fd_QueryResponse_document = md_QueryResponse.Fields().ByName("document") - fd_QueryResponse_params = md_QueryResponse.Fields().ByName("params") -} - -var _ protoreflect.Message = (*fastReflection_QueryResponse)(nil) - -type fastReflection_QueryResponse QueryResponse - -func (x *QueryResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_QueryResponse)(x) -} - -func (x *QueryResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_QueryResponse_messageType fastReflection_QueryResponse_messageType -var _ protoreflect.MessageType = fastReflection_QueryResponse_messageType{} - -type fastReflection_QueryResponse_messageType struct{} - -func (x fastReflection_QueryResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_QueryResponse)(nil) -} -func (x fastReflection_QueryResponse_messageType) New() protoreflect.Message { - return new(fastReflection_QueryResponse) -} -func (x fastReflection_QueryResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_QueryResponse -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_QueryResponse) Descriptor() protoreflect.MessageDescriptor { - return md_QueryResponse -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_QueryResponse) Type() protoreflect.MessageType { - return _fastReflection_QueryResponse_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_QueryResponse) New() protoreflect.Message { - return new(fastReflection_QueryResponse) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_QueryResponse) Interface() protoreflect.ProtoMessage { - return (*QueryResponse)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_QueryResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Success != false { - value := protoreflect.ValueOfBool(x.Success) - if !f(fd_QueryResponse_success, value) { - return - } - } - if x.Query != "" { - value := protoreflect.ValueOfString(x.Query) - if !f(fd_QueryResponse_query, value) { - return - } - } - if x.Document != nil { - value := protoreflect.ValueOfMessage(x.Document.ProtoReflect()) - if !f(fd_QueryResponse_document, value) { - return - } - } - if x.Params != nil { - value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) - if !f(fd_QueryResponse_params, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_QueryResponse) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.QueryResponse.success": - return x.Success != false - case "did.v1.QueryResponse.query": - return x.Query != "" - case "did.v1.QueryResponse.document": - return x.Document != nil - case "did.v1.QueryResponse.params": - return x.Params != nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResponse) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.QueryResponse.success": - x.Success = false - case "did.v1.QueryResponse.query": - x.Query = "" - case "did.v1.QueryResponse.document": - x.Document = nil - case "did.v1.QueryResponse.params": - x.Params = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_QueryResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.QueryResponse.success": - value := x.Success - return protoreflect.ValueOfBool(value) - case "did.v1.QueryResponse.query": - value := x.Query - return protoreflect.ValueOfString(value) - case "did.v1.QueryResponse.document": - value := x.Document - return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "did.v1.QueryResponse.params": - value := x.Params - return protoreflect.ValueOfMessage(value.ProtoReflect()) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.QueryResponse.success": - x.Success = value.Bool() - case "did.v1.QueryResponse.query": - x.Query = value.Interface().(string) - case "did.v1.QueryResponse.document": - x.Document = value.Message().Interface().(*Document) - case "did.v1.QueryResponse.params": - x.Params = value.Message().Interface().(*Params) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryResponse.document": - if x.Document == nil { - x.Document = new(Document) - } - return protoreflect.ValueOfMessage(x.Document.ProtoReflect()) - case "did.v1.QueryResponse.params": - if x.Params == nil { - x.Params = new(Params) - } - return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) - case "did.v1.QueryResponse.success": - panic(fmt.Errorf("field success of message did.v1.QueryResponse is not mutable")) - case "did.v1.QueryResponse.query": - panic(fmt.Errorf("field query of message did.v1.QueryResponse is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_QueryResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.QueryResponse.success": - return protoreflect.ValueOfBool(false) - case "did.v1.QueryResponse.query": - return protoreflect.ValueOfString("") - case "did.v1.QueryResponse.document": - m := new(Document) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "did.v1.QueryResponse.params": - m := new(Params) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.QueryResponse")) - } - panic(fmt.Errorf("message did.v1.QueryResponse does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_QueryResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.QueryResponse", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_QueryResponse) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_QueryResponse) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_QueryResponse) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_QueryResponse) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*QueryResponse) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - if x.Success { - n += 2 - } - l = len(x.Query) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Document != nil { - l = options.Size(x.Document) - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Params != nil { - l = options.Size(x.Params) - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*QueryResponse) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if x.Params != nil { - encoded, err := options.Marshal(x.Params) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x2a - } - if x.Document != nil { - encoded, err := options.Marshal(x.Document) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x1a - } - if len(x.Query) > 0 { - i -= len(x.Query) - copy(dAtA[i:], x.Query) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Query))) - i-- - dAtA[i] = 0x12 - } - if x.Success { - i-- - if x.Success { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*QueryResponse) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.Success = bool(v != 0) - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Query", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Query = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Document", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.Document == nil { - x.Document = &Document{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Document); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.Params == nil { - x.Params = &Params{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - var ( md_QueryParamsResponse protoreflect.MessageDescriptor fd_QueryParamsResponse_params protoreflect.FieldDescriptor @@ -1277,7 +645,7 @@ func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { } func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[2] + mi := &file_did_v1_query_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1712,7 +1080,7 @@ func (x *QueryResolveResponse) ProtoReflect() protoreflect.Message { } func (x *QueryResolveResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[3] + mi := &file_did_v1_query_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2127,836 +1495,6 @@ func (x *fastReflection_QueryResolveResponse) ProtoMethods() *protoiface.Methods } } -var ( - md_SyncRequest protoreflect.MessageDescriptor - fd_SyncRequest_did protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_SyncRequest = File_did_v1_query_proto.Messages().ByName("SyncRequest") - fd_SyncRequest_did = md_SyncRequest.Fields().ByName("did") -} - -var _ protoreflect.Message = (*fastReflection_SyncRequest)(nil) - -type fastReflection_SyncRequest SyncRequest - -func (x *SyncRequest) ProtoReflect() protoreflect.Message { - return (*fastReflection_SyncRequest)(x) -} - -func (x *SyncRequest) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_SyncRequest_messageType fastReflection_SyncRequest_messageType -var _ protoreflect.MessageType = fastReflection_SyncRequest_messageType{} - -type fastReflection_SyncRequest_messageType struct{} - -func (x fastReflection_SyncRequest_messageType) Zero() protoreflect.Message { - return (*fastReflection_SyncRequest)(nil) -} -func (x fastReflection_SyncRequest_messageType) New() protoreflect.Message { - return new(fastReflection_SyncRequest) -} -func (x fastReflection_SyncRequest_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_SyncRequest -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_SyncRequest) Descriptor() protoreflect.MessageDescriptor { - return md_SyncRequest -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_SyncRequest) Type() protoreflect.MessageType { - return _fastReflection_SyncRequest_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_SyncRequest) New() protoreflect.Message { - return new(fastReflection_SyncRequest) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_SyncRequest) Interface() protoreflect.ProtoMessage { - return (*SyncRequest)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_SyncRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Did != "" { - value := protoreflect.ValueOfString(x.Did) - if !f(fd_SyncRequest_did, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_SyncRequest) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.SyncRequest.did": - return x.Did != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncRequest) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.SyncRequest.did": - x.Did = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_SyncRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.SyncRequest.did": - value := x.Did - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.SyncRequest.did": - x.Did = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.SyncRequest.did": - panic(fmt.Errorf("field did of message did.v1.SyncRequest is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_SyncRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.SyncRequest.did": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncRequest")) - } - panic(fmt.Errorf("message did.v1.SyncRequest does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_SyncRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.SyncRequest", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_SyncRequest) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncRequest) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_SyncRequest) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_SyncRequest) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*SyncRequest) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Did) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*SyncRequest) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Did) > 0 { - i -= len(x.Did) - copy(dAtA[i:], x.Did) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*SyncRequest) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_SyncResponse protoreflect.MessageDescriptor - fd_SyncResponse_success protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_query_proto_init() - md_SyncResponse = File_did_v1_query_proto.Messages().ByName("SyncResponse") - fd_SyncResponse_success = md_SyncResponse.Fields().ByName("success") -} - -var _ protoreflect.Message = (*fastReflection_SyncResponse)(nil) - -type fastReflection_SyncResponse SyncResponse - -func (x *SyncResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_SyncResponse)(x) -} - -func (x *SyncResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_query_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_SyncResponse_messageType fastReflection_SyncResponse_messageType -var _ protoreflect.MessageType = fastReflection_SyncResponse_messageType{} - -type fastReflection_SyncResponse_messageType struct{} - -func (x fastReflection_SyncResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_SyncResponse)(nil) -} -func (x fastReflection_SyncResponse_messageType) New() protoreflect.Message { - return new(fastReflection_SyncResponse) -} -func (x fastReflection_SyncResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_SyncResponse -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_SyncResponse) Descriptor() protoreflect.MessageDescriptor { - return md_SyncResponse -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_SyncResponse) Type() protoreflect.MessageType { - return _fastReflection_SyncResponse_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_SyncResponse) New() protoreflect.Message { - return new(fastReflection_SyncResponse) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_SyncResponse) Interface() protoreflect.ProtoMessage { - return (*SyncResponse)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_SyncResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Success != false { - value := protoreflect.ValueOfBool(x.Success) - if !f(fd_SyncResponse_success, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_SyncResponse) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.SyncResponse.success": - return x.Success != false - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncResponse) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.SyncResponse.success": - x.Success = false - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_SyncResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.SyncResponse.success": - value := x.Success - return protoreflect.ValueOfBool(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.SyncResponse.success": - x.Success = value.Bool() - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.SyncResponse.success": - panic(fmt.Errorf("field success of message did.v1.SyncResponse is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_SyncResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.SyncResponse.success": - return protoreflect.ValueOfBool(false) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.SyncResponse")) - } - panic(fmt.Errorf("message did.v1.SyncResponse does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_SyncResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.SyncResponse", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_SyncResponse) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_SyncResponse) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_SyncResponse) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_SyncResponse) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*SyncResponse) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - if x.Success { - n += 2 - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*SyncResponse) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if x.Success { - i-- - if x.Success { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*SyncResponse) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.Success = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -3030,66 +1568,6 @@ func (x *QueryRequest) GetAsset() string { return "" } -// QueryResolveResponse is the response type for the Query/Resolve RPC method. -type QueryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - Document *Document `protobuf:"bytes,3,opt,name=document,proto3" json:"document,omitempty"` - Params *Params `protobuf:"bytes,5,opt,name=params,proto3" json:"params,omitempty"` -} - -func (x *QueryResponse) Reset() { - *x = QueryResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryResponse) ProtoMessage() {} - -// Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. -func (*QueryResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{1} -} - -func (x *QueryResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *QueryResponse) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *QueryResponse) GetDocument() *Document { - if x != nil { - return x.Document - } - return nil -} - -func (x *QueryResponse) GetParams() *Params { - if x != nil { - return x.Params - } - return nil -} - // QueryParamsResponse is the response type for the Query/Params RPC method. type QueryParamsResponse struct { state protoimpl.MessageState @@ -3103,7 +1581,7 @@ type QueryParamsResponse struct { func (x *QueryParamsResponse) Reset() { *x = QueryParamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[2] + mi := &file_did_v1_query_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3117,7 +1595,7 @@ func (*QueryParamsResponse) ProtoMessage() {} // Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{2} + return file_did_v1_query_proto_rawDescGZIP(), []int{1} } func (x *QueryParamsResponse) GetParams() *Params { @@ -3140,7 +1618,7 @@ type QueryResolveResponse struct { func (x *QueryResolveResponse) Reset() { *x = QueryResolveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[3] + mi := &file_did_v1_query_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3154,7 +1632,7 @@ func (*QueryResolveResponse) ProtoMessage() {} // Deprecated: Use QueryResolveResponse.ProtoReflect.Descriptor instead. func (*QueryResolveResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{3} + return file_did_v1_query_proto_rawDescGZIP(), []int{2} } func (x *QueryResolveResponse) GetDocument() *Document { @@ -3164,78 +1642,6 @@ func (x *QueryResolveResponse) GetDocument() *Document { return nil } -// SyncRequest is the request type for the Sync RPC method. -type SyncRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (x *SyncRequest) Reset() { - *x = SyncRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SyncRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SyncRequest) ProtoMessage() {} - -// Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead. -func (*SyncRequest) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{4} -} - -func (x *SyncRequest) GetDid() string { - if x != nil { - return x.Did - } - return "" -} - -// SyncResponse is the response type for the Sync RPC method. -type SyncResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` -} - -func (x *SyncResponse) Reset() { - *x = SyncResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_query_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SyncResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SyncResponse) ProtoMessage() {} - -// Deprecated: Use SyncResponse.ProtoReflect.Descriptor instead. -func (*SyncResponse) Descriptor() ([]byte, []int) { - return file_did_v1_query_proto_rawDescGZIP(), []int{5} -} - -func (x *SyncResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - var File_did_v1_query_proto protoreflect.FileDescriptor var file_did_v1_query_proto_rawDesc = []byte{ @@ -3250,52 +1656,34 @@ var file_did_v1_query_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x3d, 0x0a, 0x13, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x1f, 0x0a, 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, - 0x22, 0x28, 0x0a, 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x32, 0xea, 0x01, 0x0a, 0x05, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x2f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x14, 0x2e, - 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x64, 0x69, 0x64, 0x2f, - 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x12, 0x40, 0x0a, 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x13, 0x2e, - 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x07, - 0x22, 0x05, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, - 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, - 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x74, 0x22, 0x3d, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x22, 0x44, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x32, 0xa8, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x4c, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x51, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x14, 0x2e, 0x64, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x7b, 0x64, 0x69, + 0x64, 0x7d, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, + 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, + 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, + 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3310,33 +1698,26 @@ func file_did_v1_query_proto_rawDescGZIP() []byte { return file_did_v1_query_proto_rawDescData } -var file_did_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_did_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_did_v1_query_proto_goTypes = []interface{}{ (*QueryRequest)(nil), // 0: did.v1.QueryRequest - (*QueryResponse)(nil), // 1: did.v1.QueryResponse - (*QueryParamsResponse)(nil), // 2: did.v1.QueryParamsResponse - (*QueryResolveResponse)(nil), // 3: did.v1.QueryResolveResponse - (*SyncRequest)(nil), // 4: did.v1.SyncRequest - (*SyncResponse)(nil), // 5: did.v1.SyncResponse - (*Document)(nil), // 6: did.v1.Document - (*Params)(nil), // 7: did.v1.Params + (*QueryParamsResponse)(nil), // 1: did.v1.QueryParamsResponse + (*QueryResolveResponse)(nil), // 2: did.v1.QueryResolveResponse + (*Params)(nil), // 3: did.v1.Params + (*Document)(nil), // 4: did.v1.Document } var file_did_v1_query_proto_depIdxs = []int32{ - 6, // 0: did.v1.QueryResponse.document:type_name -> did.v1.Document - 7, // 1: did.v1.QueryResponse.params:type_name -> did.v1.Params - 7, // 2: did.v1.QueryParamsResponse.params:type_name -> did.v1.Params - 6, // 3: did.v1.QueryResolveResponse.document:type_name -> did.v1.Document - 0, // 4: did.v1.Query.Params:input_type -> did.v1.QueryRequest - 0, // 5: did.v1.Query.Resolve:input_type -> did.v1.QueryRequest - 4, // 6: did.v1.Query.Sync:input_type -> did.v1.SyncRequest - 2, // 7: did.v1.Query.Params:output_type -> did.v1.QueryParamsResponse - 3, // 8: did.v1.Query.Resolve:output_type -> did.v1.QueryResolveResponse - 5, // 9: did.v1.Query.Sync:output_type -> did.v1.SyncResponse - 7, // [7:10] is the sub-list for method output_type - 4, // [4:7] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 3, // 0: did.v1.QueryParamsResponse.params:type_name -> did.v1.Params + 4, // 1: did.v1.QueryResolveResponse.document:type_name -> did.v1.Document + 0, // 2: did.v1.Query.Params:input_type -> did.v1.QueryRequest + 0, // 3: did.v1.Query.Resolve:input_type -> did.v1.QueryRequest + 1, // 4: did.v1.Query.Params:output_type -> did.v1.QueryParamsResponse + 2, // 5: did.v1.Query.Resolve:output_type -> did.v1.QueryResolveResponse + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_did_v1_query_proto_init() } @@ -3359,18 +1740,6 @@ func file_did_v1_query_proto_init() { } } file_did_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryParamsResponse); i { case 0: return &v.state @@ -3382,7 +1751,7 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryResolveResponse); i { case 0: return &v.state @@ -3394,30 +1763,6 @@ func file_did_v1_query_proto_init() { return nil } } - file_did_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3425,7 +1770,7 @@ func file_did_v1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 3, NumExtensions: 0, NumServices: 1, }, diff --git a/api/did/v1/query_grpc.pb.go b/api/did/v1/query_grpc.pb.go index 77258f332..60ab53114 100644 --- a/api/did/v1/query_grpc.pb.go +++ b/api/did/v1/query_grpc.pb.go @@ -21,7 +21,6 @@ const _ = grpc.SupportPackageIsVersion7 const ( Query_Params_FullMethodName = "/did.v1.Query/Params" Query_Resolve_FullMethodName = "/did.v1.Query/Resolve" - Query_Sync_FullMethodName = "/did.v1.Query/Sync" ) // QueryClient is the client API for Query service. @@ -32,8 +31,6 @@ type QueryClient interface { Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // Resolve queries the DID document by its id. Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) - // Sync queries the DID document by its id. And returns the required PKL information - Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) } type queryClient struct { @@ -62,15 +59,6 @@ func (c *queryClient) Resolve(ctx context.Context, in *QueryRequest, opts ...grp return out, nil } -func (c *queryClient) Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) { - out := new(SyncResponse) - err := c.cc.Invoke(ctx, Query_Sync_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // QueryServer is the server API for Query service. // All implementations must embed UnimplementedQueryServer // for forward compatibility @@ -79,8 +67,6 @@ type QueryServer interface { Params(context.Context, *QueryRequest) (*QueryParamsResponse, error) // Resolve queries the DID document by its id. Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) - // Sync queries the DID document by its id. And returns the required PKL information - Sync(context.Context, *SyncRequest) (*SyncResponse, error) mustEmbedUnimplementedQueryServer() } @@ -94,9 +80,6 @@ func (UnimplementedQueryServer) Params(context.Context, *QueryRequest) (*QueryPa func (UnimplementedQueryServer) Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Resolve not implemented") } -func (UnimplementedQueryServer) Sync(context.Context, *SyncRequest) (*SyncResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Sync not implemented") -} func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} // UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. @@ -146,24 +129,6 @@ func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } -func _Query_Sync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SyncRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Sync(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Query_Sync_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Sync(ctx, req.(*SyncRequest)) - } - return interceptor(ctx, in, info, handler) -} - // Query_ServiceDesc is the grpc.ServiceDesc for Query service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -179,10 +144,6 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "Resolve", Handler: _Query_Resolve_Handler, }, - { - MethodName: "Sync", - Handler: _Query_Sync_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "did/v1/query.proto", diff --git a/api/did/v1/state.cosmos_orm.go b/api/did/v1/state.cosmos_orm.go index e7589f1e8..bc858ea6c 100644 --- a/api/did/v1/state.cosmos_orm.go +++ b/api/did/v1/state.cosmos_orm.go @@ -168,12 +168,14 @@ func NewAliasTable(db ormtable.Schema) (AliasTable, error) { type ControllerTable interface { Insert(ctx context.Context, controller *Controller) error + InsertReturningNumber(ctx context.Context, controller *Controller) (uint64, error) + LastInsertedSequence(ctx context.Context) (uint64, error) Update(ctx context.Context, controller *Controller) error Save(ctx context.Context, controller *Controller) error Delete(ctx context.Context, controller *Controller) error - Has(ctx context.Context, id string) (found bool, err error) + Has(ctx context.Context, number uint64) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. - Get(ctx context.Context, id string) (*Controller, error) + Get(ctx context.Context, number uint64) (*Controller, error) HasBySonrAddress(ctx context.Context, sonr_address string) (found bool, err error) // GetBySonrAddress returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. GetBySonrAddress(ctx context.Context, sonr_address string) (*Controller, error) @@ -183,12 +185,9 @@ type ControllerTable interface { HasByBtcAddress(ctx context.Context, btc_address string) (found bool, err error) // GetByBtcAddress returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. GetByBtcAddress(ctx context.Context, btc_address string) (*Controller, error) - HasByVaultCid(ctx context.Context, vault_cid string) (found bool, err error) - // GetByVaultCid returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. - GetByVaultCid(ctx context.Context, vault_cid string) (*Controller, error) - HasByStatusVaultCid(ctx context.Context, status string, vault_cid string) (found bool, err error) - // GetByStatusVaultCid returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. - GetByStatusVaultCid(ctx context.Context, status string, vault_cid string) (*Controller, error) + HasByDid(ctx context.Context, did string) (found bool, err error) + // GetByDid returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + GetByDid(ctx context.Context, did string) (*Controller, error) List(ctx context.Context, prefixKey ControllerIndexKey, opts ...ormlist.Option) (ControllerIterator, error) ListRange(ctx context.Context, from, to ControllerIndexKey, opts ...ormlist.Option) (ControllerIterator, error) DeleteBy(ctx context.Context, prefixKey ControllerIndexKey) error @@ -214,18 +213,18 @@ type ControllerIndexKey interface { } // primary key starting index.. -type ControllerPrimaryKey = ControllerIdIndexKey +type ControllerPrimaryKey = ControllerNumberIndexKey -type ControllerIdIndexKey struct { +type ControllerNumberIndexKey struct { vs []interface{} } -func (x ControllerIdIndexKey) id() uint32 { return 0 } -func (x ControllerIdIndexKey) values() []interface{} { return x.vs } -func (x ControllerIdIndexKey) controllerIndexKey() {} +func (x ControllerNumberIndexKey) id() uint32 { return 0 } +func (x ControllerNumberIndexKey) values() []interface{} { return x.vs } +func (x ControllerNumberIndexKey) controllerIndexKey() {} -func (this ControllerIdIndexKey) WithId(id string) ControllerIdIndexKey { - this.vs = []interface{}{id} +func (this ControllerNumberIndexKey) WithNumber(number uint64) ControllerNumberIndexKey { + this.vs = []interface{}{number} return this } @@ -268,39 +267,21 @@ func (this ControllerBtcAddressIndexKey) WithBtcAddress(btc_address string) Cont return this } -type ControllerVaultCidIndexKey struct { +type ControllerDidIndexKey struct { vs []interface{} } -func (x ControllerVaultCidIndexKey) id() uint32 { return 4 } -func (x ControllerVaultCidIndexKey) values() []interface{} { return x.vs } -func (x ControllerVaultCidIndexKey) controllerIndexKey() {} +func (x ControllerDidIndexKey) id() uint32 { return 4 } +func (x ControllerDidIndexKey) values() []interface{} { return x.vs } +func (x ControllerDidIndexKey) controllerIndexKey() {} -func (this ControllerVaultCidIndexKey) WithVaultCid(vault_cid string) ControllerVaultCidIndexKey { - this.vs = []interface{}{vault_cid} - return this -} - -type ControllerStatusVaultCidIndexKey struct { - vs []interface{} -} - -func (x ControllerStatusVaultCidIndexKey) id() uint32 { return 5 } -func (x ControllerStatusVaultCidIndexKey) values() []interface{} { return x.vs } -func (x ControllerStatusVaultCidIndexKey) controllerIndexKey() {} - -func (this ControllerStatusVaultCidIndexKey) WithStatus(status string) ControllerStatusVaultCidIndexKey { - this.vs = []interface{}{status} - return this -} - -func (this ControllerStatusVaultCidIndexKey) WithStatusVaultCid(status string, vault_cid string) ControllerStatusVaultCidIndexKey { - this.vs = []interface{}{status, vault_cid} +func (this ControllerDidIndexKey) WithDid(did string) ControllerDidIndexKey { + this.vs = []interface{}{did} return this } type controllerTable struct { - table ormtable.Table + table ormtable.AutoIncrementTable } func (this controllerTable) Insert(ctx context.Context, controller *Controller) error { @@ -319,13 +300,21 @@ func (this controllerTable) Delete(ctx context.Context, controller *Controller) return this.table.Delete(ctx, controller) } -func (this controllerTable) Has(ctx context.Context, id string) (found bool, err error) { - return this.table.PrimaryKey().Has(ctx, id) +func (this controllerTable) InsertReturningNumber(ctx context.Context, controller *Controller) (uint64, error) { + return this.table.InsertReturningPKey(ctx, controller) } -func (this controllerTable) Get(ctx context.Context, id string) (*Controller, error) { +func (this controllerTable) LastInsertedSequence(ctx context.Context) (uint64, error) { + return this.table.LastInsertedSequence(ctx) +} + +func (this controllerTable) Has(ctx context.Context, number uint64) (found bool, err error) { + return this.table.PrimaryKey().Has(ctx, number) +} + +func (this controllerTable) Get(ctx context.Context, number uint64) (*Controller, error) { var controller Controller - found, err := this.table.PrimaryKey().Get(ctx, &controller, id) + found, err := this.table.PrimaryKey().Get(ctx, &controller, number) if err != nil { return nil, err } @@ -395,38 +384,16 @@ func (this controllerTable) GetByBtcAddress(ctx context.Context, btc_address str return &controller, nil } -func (this controllerTable) HasByVaultCid(ctx context.Context, vault_cid string) (found bool, err error) { +func (this controllerTable) HasByDid(ctx context.Context, did string) (found bool, err error) { return this.table.GetIndexByID(4).(ormtable.UniqueIndex).Has(ctx, - vault_cid, + did, ) } -func (this controllerTable) GetByVaultCid(ctx context.Context, vault_cid string) (*Controller, error) { +func (this controllerTable) GetByDid(ctx context.Context, did string) (*Controller, error) { var controller Controller found, err := this.table.GetIndexByID(4).(ormtable.UniqueIndex).Get(ctx, &controller, - vault_cid, - ) - if err != nil { - return nil, err - } - if !found { - return nil, ormerrors.NotFound - } - return &controller, nil -} - -func (this controllerTable) HasByStatusVaultCid(ctx context.Context, status string, vault_cid string) (found bool, err error) { - return this.table.GetIndexByID(5).(ormtable.UniqueIndex).Has(ctx, - status, - vault_cid, - ) -} - -func (this controllerTable) GetByStatusVaultCid(ctx context.Context, status string, vault_cid string) (*Controller, error) { - var controller Controller - found, err := this.table.GetIndexByID(5).(ormtable.UniqueIndex).Get(ctx, &controller, - status, - vault_cid, + did, ) if err != nil { return nil, err @@ -464,7 +431,7 @@ func NewControllerTable(db ormtable.Schema) (ControllerTable, error) { if table == nil { return nil, ormerrors.TableNotFound.Wrap(string((&Controller{}).ProtoReflect().Descriptor().FullName())) } - return controllerTable{table}, nil + return controllerTable{table.(ormtable.AutoIncrementTable)}, nil } type VerificationTable interface { @@ -472,9 +439,9 @@ type VerificationTable interface { Update(ctx context.Context, verification *Verification) error Save(ctx context.Context, verification *Verification) error Delete(ctx context.Context, verification *Verification) error - Has(ctx context.Context, id string) (found bool, err error) + Has(ctx context.Context, did string) (found bool, err error) // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. - Get(ctx context.Context, id string) (*Verification, error) + Get(ctx context.Context, did string) (*Verification, error) HasByIssuerSubject(ctx context.Context, issuer string, subject string) (found bool, err error) // GetByIssuerSubject returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. GetByIssuerSubject(ctx context.Context, issuer string, subject string) (*Verification, error) @@ -509,18 +476,18 @@ type VerificationIndexKey interface { } // primary key starting index.. -type VerificationPrimaryKey = VerificationIdIndexKey +type VerificationPrimaryKey = VerificationDidIndexKey -type VerificationIdIndexKey struct { +type VerificationDidIndexKey struct { vs []interface{} } -func (x VerificationIdIndexKey) id() uint32 { return 0 } -func (x VerificationIdIndexKey) values() []interface{} { return x.vs } -func (x VerificationIdIndexKey) verificationIndexKey() {} +func (x VerificationDidIndexKey) id() uint32 { return 0 } +func (x VerificationDidIndexKey) values() []interface{} { return x.vs } +func (x VerificationDidIndexKey) verificationIndexKey() {} -func (this VerificationIdIndexKey) WithId(id string) VerificationIdIndexKey { - this.vs = []interface{}{id} +func (this VerificationDidIndexKey) WithDid(did string) VerificationDidIndexKey { + this.vs = []interface{}{did} return this } @@ -608,13 +575,13 @@ func (this verificationTable) Delete(ctx context.Context, verification *Verifica return this.table.Delete(ctx, verification) } -func (this verificationTable) Has(ctx context.Context, id string) (found bool, err error) { - return this.table.PrimaryKey().Has(ctx, id) +func (this verificationTable) Has(ctx context.Context, did string) (found bool, err error) { + return this.table.PrimaryKey().Has(ctx, did) } -func (this verificationTable) Get(ctx context.Context, id string) (*Verification, error) { +func (this verificationTable) Get(ctx context.Context, did string) (*Verification, error) { var verification Verification - found, err := this.table.PrimaryKey().Get(ctx, &verification, id) + found, err := this.table.PrimaryKey().Get(ctx, &verification, did) if err != nil { return nil, err } diff --git a/api/did/v1/state.pulsar.go b/api/did/v1/state.pulsar.go index 3d0e07460..169e13e73 100644 --- a/api/did/v1/state.pulsar.go +++ b/api/did/v1/state.pulsar.go @@ -561,123 +561,29 @@ func (x *fastReflection_Alias) ProtoMethods() *protoiface.Methods { } } -var _ protoreflect.List = (*_Controller_5_list)(nil) - -type _Controller_5_list struct { - list *[]string -} - -func (x *_Controller_5_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Controller_5_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfString((*x.list)[i]) -} - -func (x *_Controller_5_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - (*x.list)[i] = concreteValue -} - -func (x *_Controller_5_list) Append(value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - *x.list = append(*x.list, concreteValue) -} - -func (x *_Controller_5_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message Controller at list field Aliases as it is not of Message kind")) -} - -func (x *_Controller_5_list) Truncate(n int) { - *x.list = (*x.list)[:n] -} - -func (x *_Controller_5_list) NewElement() protoreflect.Value { - v := "" - return protoreflect.ValueOfString(v) -} - -func (x *_Controller_5_list) IsValid() bool { - return x.list != nil -} - -var _ protoreflect.List = (*_Controller_8_list)(nil) - -type _Controller_8_list struct { - list *[]string -} - -func (x *_Controller_8_list) Len() int { - if x.list == nil { - return 0 - } - return len(*x.list) -} - -func (x *_Controller_8_list) Get(i int) protoreflect.Value { - return protoreflect.ValueOfString((*x.list)[i]) -} - -func (x *_Controller_8_list) Set(i int, value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - (*x.list)[i] = concreteValue -} - -func (x *_Controller_8_list) Append(value protoreflect.Value) { - valueUnwrapped := value.String() - concreteValue := valueUnwrapped - *x.list = append(*x.list, concreteValue) -} - -func (x *_Controller_8_list) AppendMutable() protoreflect.Value { - panic(fmt.Errorf("AppendMutable can not be called on message Controller at list field Authentication as it is not of Message kind")) -} - -func (x *_Controller_8_list) Truncate(n int) { - *x.list = (*x.list)[:n] -} - -func (x *_Controller_8_list) NewElement() protoreflect.Value { - v := "" - return protoreflect.ValueOfString(v) -} - -func (x *_Controller_8_list) IsValid() bool { - return x.list != nil -} - var ( - md_Controller protoreflect.MessageDescriptor - fd_Controller_id protoreflect.FieldDescriptor - fd_Controller_sonr_address protoreflect.FieldDescriptor - fd_Controller_eth_address protoreflect.FieldDescriptor - fd_Controller_btc_address protoreflect.FieldDescriptor - fd_Controller_aliases protoreflect.FieldDescriptor - fd_Controller_public_key protoreflect.FieldDescriptor - fd_Controller_vault_cid protoreflect.FieldDescriptor - fd_Controller_authentication protoreflect.FieldDescriptor - fd_Controller_status protoreflect.FieldDescriptor + md_Controller protoreflect.MessageDescriptor + fd_Controller_number protoreflect.FieldDescriptor + fd_Controller_did protoreflect.FieldDescriptor + fd_Controller_sonr_address protoreflect.FieldDescriptor + fd_Controller_eth_address protoreflect.FieldDescriptor + fd_Controller_btc_address protoreflect.FieldDescriptor + fd_Controller_public_key protoreflect.FieldDescriptor + fd_Controller_ks_val protoreflect.FieldDescriptor + fd_Controller_claimed protoreflect.FieldDescriptor ) func init() { file_did_v1_state_proto_init() md_Controller = File_did_v1_state_proto.Messages().ByName("Controller") - fd_Controller_id = md_Controller.Fields().ByName("id") + fd_Controller_number = md_Controller.Fields().ByName("number") + fd_Controller_did = md_Controller.Fields().ByName("did") fd_Controller_sonr_address = md_Controller.Fields().ByName("sonr_address") fd_Controller_eth_address = md_Controller.Fields().ByName("eth_address") fd_Controller_btc_address = md_Controller.Fields().ByName("btc_address") - fd_Controller_aliases = md_Controller.Fields().ByName("aliases") fd_Controller_public_key = md_Controller.Fields().ByName("public_key") - fd_Controller_vault_cid = md_Controller.Fields().ByName("vault_cid") - fd_Controller_authentication = md_Controller.Fields().ByName("authentication") - fd_Controller_status = md_Controller.Fields().ByName("status") + fd_Controller_ks_val = md_Controller.Fields().ByName("ks_val") + fd_Controller_claimed = md_Controller.Fields().ByName("claimed") } var _ protoreflect.Message = (*fastReflection_Controller)(nil) @@ -745,9 +651,15 @@ func (x *fastReflection_Controller) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_Controller) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Id != "" { - value := protoreflect.ValueOfString(x.Id) - if !f(fd_Controller_id, value) { + if x.Number != uint64(0) { + value := protoreflect.ValueOfUint64(x.Number) + if !f(fd_Controller_number, value) { + return + } + } + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_Controller_did, value) { return } } @@ -769,33 +681,21 @@ func (x *fastReflection_Controller) Range(f func(protoreflect.FieldDescriptor, p return } } - if len(x.Aliases) != 0 { - value := protoreflect.ValueOfList(&_Controller_5_list{list: &x.Aliases}) - if !f(fd_Controller_aliases, value) { - return - } - } - if x.PublicKey != nil { - value := protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) + if len(x.PublicKey) != 0 { + value := protoreflect.ValueOfBytes(x.PublicKey) if !f(fd_Controller_public_key, value) { return } } - if x.VaultCid != "" { - value := protoreflect.ValueOfString(x.VaultCid) - if !f(fd_Controller_vault_cid, value) { + if x.KsVal != "" { + value := protoreflect.ValueOfString(x.KsVal) + if !f(fd_Controller_ks_val, value) { return } } - if len(x.Authentication) != 0 { - value := protoreflect.ValueOfList(&_Controller_8_list{list: &x.Authentication}) - if !f(fd_Controller_authentication, value) { - return - } - } - if x.Status != "" { - value := protoreflect.ValueOfString(x.Status) - if !f(fd_Controller_status, value) { + if x.Claimed != false { + value := protoreflect.ValueOfBool(x.Claimed) + if !f(fd_Controller_claimed, value) { return } } @@ -814,24 +714,22 @@ func (x *fastReflection_Controller) Range(f func(protoreflect.FieldDescriptor, p // a repeated field is populated if it is non-empty. func (x *fastReflection_Controller) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.Controller.id": - return x.Id != "" + case "did.v1.Controller.number": + return x.Number != uint64(0) + case "did.v1.Controller.did": + return x.Did != "" case "did.v1.Controller.sonr_address": return x.SonrAddress != "" case "did.v1.Controller.eth_address": return x.EthAddress != "" case "did.v1.Controller.btc_address": return x.BtcAddress != "" - case "did.v1.Controller.aliases": - return len(x.Aliases) != 0 case "did.v1.Controller.public_key": - return x.PublicKey != nil - case "did.v1.Controller.vault_cid": - return x.VaultCid != "" - case "did.v1.Controller.authentication": - return len(x.Authentication) != 0 - case "did.v1.Controller.status": - return x.Status != "" + return len(x.PublicKey) != 0 + case "did.v1.Controller.ks_val": + return x.KsVal != "" + case "did.v1.Controller.claimed": + return x.Claimed != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -848,24 +746,22 @@ func (x *fastReflection_Controller) Has(fd protoreflect.FieldDescriptor) bool { // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Controller) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.Controller.id": - x.Id = "" + case "did.v1.Controller.number": + x.Number = uint64(0) + case "did.v1.Controller.did": + x.Did = "" case "did.v1.Controller.sonr_address": x.SonrAddress = "" case "did.v1.Controller.eth_address": x.EthAddress = "" case "did.v1.Controller.btc_address": x.BtcAddress = "" - case "did.v1.Controller.aliases": - x.Aliases = nil case "did.v1.Controller.public_key": x.PublicKey = nil - case "did.v1.Controller.vault_cid": - x.VaultCid = "" - case "did.v1.Controller.authentication": - x.Authentication = nil - case "did.v1.Controller.status": - x.Status = "" + case "did.v1.Controller.ks_val": + x.KsVal = "" + case "did.v1.Controller.claimed": + x.Claimed = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -882,8 +778,11 @@ func (x *fastReflection_Controller) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_Controller) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.Controller.id": - value := x.Id + case "did.v1.Controller.number": + value := x.Number + return protoreflect.ValueOfUint64(value) + case "did.v1.Controller.did": + value := x.Did return protoreflect.ValueOfString(value) case "did.v1.Controller.sonr_address": value := x.SonrAddress @@ -894,27 +793,15 @@ func (x *fastReflection_Controller) Get(descriptor protoreflect.FieldDescriptor) case "did.v1.Controller.btc_address": value := x.BtcAddress return protoreflect.ValueOfString(value) - case "did.v1.Controller.aliases": - if len(x.Aliases) == 0 { - return protoreflect.ValueOfList(&_Controller_5_list{}) - } - listValue := &_Controller_5_list{list: &x.Aliases} - return protoreflect.ValueOfList(listValue) case "did.v1.Controller.public_key": value := x.PublicKey - return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "did.v1.Controller.vault_cid": - value := x.VaultCid - return protoreflect.ValueOfString(value) - case "did.v1.Controller.authentication": - if len(x.Authentication) == 0 { - return protoreflect.ValueOfList(&_Controller_8_list{}) - } - listValue := &_Controller_8_list{list: &x.Authentication} - return protoreflect.ValueOfList(listValue) - case "did.v1.Controller.status": - value := x.Status + return protoreflect.ValueOfBytes(value) + case "did.v1.Controller.ks_val": + value := x.KsVal return protoreflect.ValueOfString(value) + case "did.v1.Controller.claimed": + value := x.Claimed + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -935,28 +822,22 @@ func (x *fastReflection_Controller) Get(descriptor protoreflect.FieldDescriptor) // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Controller) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.Controller.id": - x.Id = value.Interface().(string) + case "did.v1.Controller.number": + x.Number = value.Uint() + case "did.v1.Controller.did": + x.Did = value.Interface().(string) case "did.v1.Controller.sonr_address": x.SonrAddress = value.Interface().(string) case "did.v1.Controller.eth_address": x.EthAddress = value.Interface().(string) case "did.v1.Controller.btc_address": x.BtcAddress = value.Interface().(string) - case "did.v1.Controller.aliases": - lv := value.List() - clv := lv.(*_Controller_5_list) - x.Aliases = *clv.list case "did.v1.Controller.public_key": - x.PublicKey = value.Message().Interface().(*PubKey) - case "did.v1.Controller.vault_cid": - x.VaultCid = value.Interface().(string) - case "did.v1.Controller.authentication": - lv := value.List() - clv := lv.(*_Controller_8_list) - x.Authentication = *clv.list - case "did.v1.Controller.status": - x.Status = value.Interface().(string) + x.PublicKey = value.Bytes() + case "did.v1.Controller.ks_val": + x.KsVal = value.Interface().(string) + case "did.v1.Controller.claimed": + x.Claimed = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -977,35 +858,22 @@ func (x *fastReflection_Controller) Set(fd protoreflect.FieldDescriptor, value p // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Controller) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Controller.aliases": - if x.Aliases == nil { - x.Aliases = []string{} - } - value := &_Controller_5_list{list: &x.Aliases} - return protoreflect.ValueOfList(value) - case "did.v1.Controller.public_key": - if x.PublicKey == nil { - x.PublicKey = new(PubKey) - } - return protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) - case "did.v1.Controller.authentication": - if x.Authentication == nil { - x.Authentication = []string{} - } - value := &_Controller_8_list{list: &x.Authentication} - return protoreflect.ValueOfList(value) - case "did.v1.Controller.id": - panic(fmt.Errorf("field id of message did.v1.Controller is not mutable")) + case "did.v1.Controller.number": + panic(fmt.Errorf("field number of message did.v1.Controller is not mutable")) + case "did.v1.Controller.did": + panic(fmt.Errorf("field did of message did.v1.Controller is not mutable")) case "did.v1.Controller.sonr_address": panic(fmt.Errorf("field sonr_address of message did.v1.Controller is not mutable")) case "did.v1.Controller.eth_address": panic(fmt.Errorf("field eth_address of message did.v1.Controller is not mutable")) case "did.v1.Controller.btc_address": panic(fmt.Errorf("field btc_address of message did.v1.Controller is not mutable")) - case "did.v1.Controller.vault_cid": - panic(fmt.Errorf("field vault_cid of message did.v1.Controller is not mutable")) - case "did.v1.Controller.status": - panic(fmt.Errorf("field status of message did.v1.Controller is not mutable")) + case "did.v1.Controller.public_key": + panic(fmt.Errorf("field public_key of message did.v1.Controller is not mutable")) + case "did.v1.Controller.ks_val": + panic(fmt.Errorf("field ks_val of message did.v1.Controller is not mutable")) + case "did.v1.Controller.claimed": + panic(fmt.Errorf("field claimed of message did.v1.Controller is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -1019,7 +887,9 @@ func (x *fastReflection_Controller) Mutable(fd protoreflect.FieldDescriptor) pro // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_Controller) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Controller.id": + case "did.v1.Controller.number": + return protoreflect.ValueOfUint64(uint64(0)) + case "did.v1.Controller.did": return protoreflect.ValueOfString("") case "did.v1.Controller.sonr_address": return protoreflect.ValueOfString("") @@ -1027,19 +897,12 @@ func (x *fastReflection_Controller) NewField(fd protoreflect.FieldDescriptor) pr return protoreflect.ValueOfString("") case "did.v1.Controller.btc_address": return protoreflect.ValueOfString("") - case "did.v1.Controller.aliases": - list := []string{} - return protoreflect.ValueOfList(&_Controller_5_list{list: &list}) case "did.v1.Controller.public_key": - m := new(PubKey) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "did.v1.Controller.vault_cid": - return protoreflect.ValueOfString("") - case "did.v1.Controller.authentication": - list := []string{} - return protoreflect.ValueOfList(&_Controller_8_list{list: &list}) - case "did.v1.Controller.status": + return protoreflect.ValueOfBytes(nil) + case "did.v1.Controller.ks_val": return protoreflect.ValueOfString("") + case "did.v1.Controller.claimed": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.Controller")) @@ -1109,7 +972,10 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Id) + if x.Number != 0 { + n += 1 + runtime.Sov(uint64(x.Number)) + } + l = len(x.Did) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -1125,30 +991,17 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Aliases) > 0 { - for _, s := range x.Aliases { - l = len(s) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - if x.PublicKey != nil { - l = options.Size(x.PublicKey) - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.VaultCid) + l = len(x.PublicKey) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Authentication) > 0 { - for _, s := range x.Authentication { - l = len(s) - n += 1 + l + runtime.Sov(uint64(l)) - } - } - l = len(x.Status) + l = len(x.KsVal) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Claimed { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1178,79 +1031,62 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Status) > 0 { - i -= len(x.Status) - copy(dAtA[i:], x.Status) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Status))) + if x.Claimed { i-- - dAtA[i] = 0x4a - } - if len(x.Authentication) > 0 { - for iNdEx := len(x.Authentication) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Authentication[iNdEx]) - copy(dAtA[i:], x.Authentication[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authentication[iNdEx]))) - i-- - dAtA[i] = 0x42 + if x.Claimed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } + i-- + dAtA[i] = 0x40 } - if len(x.VaultCid) > 0 { - i -= len(x.VaultCid) - copy(dAtA[i:], x.VaultCid) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.VaultCid))) + if len(x.KsVal) > 0 { + i -= len(x.KsVal) + copy(dAtA[i:], x.KsVal) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.KsVal))) i-- dAtA[i] = 0x3a } - if x.PublicKey != nil { - encoded, err := options.Marshal(x.PublicKey) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + if len(x.PublicKey) > 0 { + i -= len(x.PublicKey) + copy(dAtA[i:], x.PublicKey) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PublicKey))) i-- dAtA[i] = 0x32 } - if len(x.Aliases) > 0 { - for iNdEx := len(x.Aliases) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Aliases[iNdEx]) - copy(dAtA[i:], x.Aliases[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Aliases[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } if len(x.BtcAddress) > 0 { i -= len(x.BtcAddress) copy(dAtA[i:], x.BtcAddress) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.BtcAddress))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } if len(x.EthAddress) > 0 { i -= len(x.EthAddress) copy(dAtA[i:], x.EthAddress) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EthAddress))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(x.SonrAddress) > 0 { i -= len(x.SonrAddress) copy(dAtA[i:], x.SonrAddress) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SonrAddress))) i-- + dAtA[i] = 0x1a + } + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) + i-- dAtA[i] = 0x12 } - if len(x.Id) > 0 { - i -= len(x.Id) - copy(dAtA[i:], x.Id) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + if x.Number != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Number)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } if input.Buf != nil { input.Buf = append(input.Buf, dAtA...) @@ -1302,8 +1138,27 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } switch fieldNum { case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Number", wireType) + } + x.Number = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Number |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1331,9 +1186,9 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Id = string(dAtA[iNdEx:postIndex]) + x.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SonrAddress", wireType) } @@ -1365,7 +1220,7 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } x.SonrAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EthAddress", wireType) } @@ -1397,7 +1252,7 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } x.EthAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BtcAddress", wireType) } @@ -1429,43 +1284,11 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } x.BtcAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Aliases", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Aliases = append(x.Aliases, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex case 6: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -1475,31 +1298,29 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } + x.PublicKey = append(x.PublicKey[:0], dAtA[iNdEx:postIndex]...) if x.PublicKey == nil { - x.PublicKey = &PubKey{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PublicKey); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + x.PublicKey = []byte{} } iNdEx = postIndex case 7: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field VaultCid", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KsVal", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1527,13 +1348,13 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.VaultCid = string(dAtA[iNdEx:postIndex]) + x.KsVal = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 8: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Claimed", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -1543,56 +1364,12 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Authentication = append(x.Authentication, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 9: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Status = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex + x.Claimed = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1630,7 +1407,7 @@ func (x *fastReflection_Controller) ProtoMethods() *protoiface.Methods { var ( md_Verification protoreflect.MessageDescriptor - fd_Verification_id protoreflect.FieldDescriptor + fd_Verification_did protoreflect.FieldDescriptor fd_Verification_controller protoreflect.FieldDescriptor fd_Verification_did_method protoreflect.FieldDescriptor fd_Verification_issuer protoreflect.FieldDescriptor @@ -1642,7 +1419,7 @@ var ( func init() { file_did_v1_state_proto_init() md_Verification = File_did_v1_state_proto.Messages().ByName("Verification") - fd_Verification_id = md_Verification.Fields().ByName("id") + fd_Verification_did = md_Verification.Fields().ByName("did") fd_Verification_controller = md_Verification.Fields().ByName("controller") fd_Verification_did_method = md_Verification.Fields().ByName("did_method") fd_Verification_issuer = md_Verification.Fields().ByName("issuer") @@ -1716,9 +1493,9 @@ func (x *fastReflection_Verification) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_Verification) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Id != "" { - value := protoreflect.ValueOfString(x.Id) - if !f(fd_Verification_id, value) { + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_Verification_did, value) { return } } @@ -1773,8 +1550,8 @@ func (x *fastReflection_Verification) Range(f func(protoreflect.FieldDescriptor, // a repeated field is populated if it is non-empty. func (x *fastReflection_Verification) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "did.v1.Verification.id": - return x.Id != "" + case "did.v1.Verification.did": + return x.Did != "" case "did.v1.Verification.controller": return x.Controller != "" case "did.v1.Verification.did_method": @@ -1803,8 +1580,8 @@ func (x *fastReflection_Verification) Has(fd protoreflect.FieldDescriptor) bool // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Verification) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "did.v1.Verification.id": - x.Id = "" + case "did.v1.Verification.did": + x.Did = "" case "did.v1.Verification.controller": x.Controller = "" case "did.v1.Verification.did_method": @@ -1833,8 +1610,8 @@ func (x *fastReflection_Verification) Clear(fd protoreflect.FieldDescriptor) { // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_Verification) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "did.v1.Verification.id": - value := x.Id + case "did.v1.Verification.did": + value := x.Did return protoreflect.ValueOfString(value) case "did.v1.Verification.controller": value := x.Controller @@ -1874,8 +1651,8 @@ func (x *fastReflection_Verification) Get(descriptor protoreflect.FieldDescripto // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Verification) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "did.v1.Verification.id": - x.Id = value.Interface().(string) + case "did.v1.Verification.did": + x.Did = value.Interface().(string) case "did.v1.Verification.controller": x.Controller = value.Interface().(string) case "did.v1.Verification.did_method": @@ -1913,8 +1690,8 @@ func (x *fastReflection_Verification) Mutable(fd protoreflect.FieldDescriptor) p x.PublicKey = new(PubKey) } return protoreflect.ValueOfMessage(x.PublicKey.ProtoReflect()) - case "did.v1.Verification.id": - panic(fmt.Errorf("field id of message did.v1.Verification is not mutable")) + case "did.v1.Verification.did": + panic(fmt.Errorf("field did of message did.v1.Verification is not mutable")) case "did.v1.Verification.controller": panic(fmt.Errorf("field controller of message did.v1.Verification is not mutable")) case "did.v1.Verification.did_method": @@ -1938,7 +1715,7 @@ func (x *fastReflection_Verification) Mutable(fd protoreflect.FieldDescriptor) p // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_Verification) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "did.v1.Verification.id": + case "did.v1.Verification.did": return protoreflect.ValueOfString("") case "did.v1.Verification.controller": return protoreflect.ValueOfString("") @@ -2022,7 +1799,7 @@ func (x *fastReflection_Verification) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Id) + l = len(x.Did) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } @@ -2128,10 +1905,10 @@ func (x *fastReflection_Verification) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x12 } - if len(x.Id) > 0 { - i -= len(x.Id) - copy(dAtA[i:], x.Id) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) i-- dAtA[i] = 0xa } @@ -2186,7 +1963,7 @@ func (x *fastReflection_Verification) ProtoMethods() *protoiface.Methods { switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -2214,7 +1991,7 @@ func (x *fastReflection_Verification) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Id = string(dAtA[iNdEx:postIndex]) + x.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -2522,23 +2299,21 @@ type Controller struct { unknownFields protoimpl.UnknownFields // The unique identifier of the controller - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Number uint64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` + // The unique identifier of the controller + Did string `protobuf:"bytes,2,opt,name=did,proto3" json:"did,omitempty"` // The DID of the controller - SonrAddress string `protobuf:"bytes,2,opt,name=sonr_address,json=sonrAddress,proto3" json:"sonr_address,omitempty"` + SonrAddress string `protobuf:"bytes,3,opt,name=sonr_address,json=sonrAddress,proto3" json:"sonr_address,omitempty"` // The DID of the controller - EthAddress string `protobuf:"bytes,3,opt,name=eth_address,json=ethAddress,proto3" json:"eth_address,omitempty"` + EthAddress string `protobuf:"bytes,4,opt,name=eth_address,json=ethAddress,proto3" json:"eth_address,omitempty"` // The DID of the controller - BtcAddress string `protobuf:"bytes,4,opt,name=btc_address,json=btcAddress,proto3" json:"btc_address,omitempty"` - // Aliases of the controller - Aliases []string `protobuf:"bytes,5,rep,name=aliases,proto3" json:"aliases,omitempty"` + BtcAddress string `protobuf:"bytes,5,opt,name=btc_address,json=btcAddress,proto3" json:"btc_address,omitempty"` // PubKey is the verification method - PublicKey *PubKey `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - // The vault address or identifier - VaultCid string `protobuf:"bytes,7,opt,name=vault_cid,json=vaultCid,proto3" json:"vault_cid,omitempty"` - // The Authentications of the controller - Authentication []string `protobuf:"bytes,8,rep,name=authentication,proto3" json:"authentication,omitempty"` + PublicKey []byte `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Val Keyshare + KsVal string `protobuf:"bytes,7,opt,name=ks_val,json=ksVal,proto3" json:"ks_val,omitempty"` // The Status of the claims for the controller - Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` + Claimed bool `protobuf:"varint,8,opt,name=claimed,proto3" json:"claimed,omitempty"` } func (x *Controller) Reset() { @@ -2561,9 +2336,16 @@ func (*Controller) Descriptor() ([]byte, []int) { return file_did_v1_state_proto_rawDescGZIP(), []int{1} } -func (x *Controller) GetId() string { +func (x *Controller) GetNumber() uint64 { if x != nil { - return x.Id + return x.Number + } + return 0 +} + +func (x *Controller) GetDid() string { + if x != nil { + return x.Did } return "" } @@ -2589,39 +2371,25 @@ func (x *Controller) GetBtcAddress() string { return "" } -func (x *Controller) GetAliases() []string { - if x != nil { - return x.Aliases - } - return nil -} - -func (x *Controller) GetPublicKey() *PubKey { +func (x *Controller) GetPublicKey() []byte { if x != nil { return x.PublicKey } return nil } -func (x *Controller) GetVaultCid() string { +func (x *Controller) GetKsVal() string { if x != nil { - return x.VaultCid + return x.KsVal } return "" } -func (x *Controller) GetAuthentication() []string { +func (x *Controller) GetClaimed() bool { if x != nil { - return x.Authentication + return x.Claimed } - return nil -} - -func (x *Controller) GetStatus() string { - if x != nil { - return x.Status - } - return "" + return false } // Verification reprsents a method of verifying membership in a DID @@ -2631,7 +2399,7 @@ type Verification struct { unknownFields protoimpl.UnknownFields // The unique identifier of the verification - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` // The controller of the verification Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // The DIDNamespace of the verification @@ -2642,7 +2410,8 @@ type Verification struct { Subject string `protobuf:"bytes,5,opt,name=subject,proto3" json:"subject,omitempty"` // The public key of the verification PublicKey *PubKey `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - // The Verification Type (Authentication, Assertion, CapabilityDelegation, CapabilityInvocation) + // The Verification Type (Authentication, Assertion, CapabilityDelegation, + // CapabilityInvocation) VerificationType string `protobuf:"bytes,7,opt,name=verification_type,json=verificationType,proto3" json:"verification_type,omitempty"` } @@ -2666,9 +2435,9 @@ func (*Verification) Descriptor() ([]byte, []int) { return file_did_v1_state_proto_rawDescGZIP(), []int{2} } -func (x *Verification) GetId() string { +func (x *Verification) GetDid() string { if x != nil { - return x.Id + return x.Did } return "" } @@ -2729,63 +2498,58 @@ var file_did_v1_state_proto_rawDesc = []byte{ 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x3a, 0x24, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x1e, 0x0a, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x01, 0x18, 0x01, 0x18, 0x01, 0x22, 0x9a, 0x03, 0x0a, - 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x6f, 0x6e, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x6e, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x62, 0x74, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x74, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x61, - 0x75, 0x6c, 0x74, 0x43, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x71, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x6b, 0x0a, 0x04, - 0x0a, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x0c, 0x73, 0x6f, 0x6e, 0x72, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, 0x18, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x02, 0x18, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x62, - 0x74, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x18, 0x01, 0x12, 0x0f, - 0x0a, 0x09, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x69, 0x64, 0x10, 0x04, 0x18, 0x01, 0x12, - 0x16, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2c, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x63, 0x69, 0x64, 0x10, 0x05, 0x18, 0x01, 0x18, 0x02, 0x22, 0xdd, 0x02, 0x0a, 0x0c, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, - 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x64, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, - 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x70, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x6a, 0x0a, - 0x04, 0x0a, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x0e, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x2c, - 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x01, 0x18, 0x01, 0x12, 0x22, 0x0a, 0x1c, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2c, 0x64, 0x69, 0x64, 0x5f, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x2c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x10, 0x02, 0x18, 0x01, 0x12, - 0x26, 0x0a, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x2c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x10, 0x03, 0x18, 0x01, 0x18, 0x04, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, - 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, - 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x10, 0x01, 0x18, 0x01, 0x18, 0x01, 0x22, 0xc6, 0x02, 0x0a, + 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x6e, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x6e, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, + 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x74, 0x63, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x74, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x73, 0x5f, + 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6b, 0x73, 0x56, 0x61, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x3a, 0x59, 0xf2, 0x9e, 0xd3, 0x8e, + 0x03, 0x53, 0x0a, 0x0a, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x12, + 0x0a, 0x0c, 0x73, 0x6f, 0x6e, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x01, + 0x18, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x65, 0x74, 0x68, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x10, 0x02, 0x18, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x62, 0x74, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x10, 0x03, 0x18, 0x01, 0x12, 0x09, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x10, + 0x04, 0x18, 0x01, 0x18, 0x02, 0x22, 0xe0, 0x02, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x64, 0x5f, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, + 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x71, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x6b, 0x0a, 0x05, 0x0a, + 0x03, 0x64, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x0e, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x2c, 0x73, + 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x01, 0x18, 0x01, 0x12, 0x22, 0x0a, 0x1c, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2c, 0x64, 0x69, 0x64, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x2c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x10, 0x02, 0x18, 0x01, 0x12, 0x26, + 0x0a, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x2c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x10, 0x03, 0x18, 0x01, 0x18, 0x04, 0x42, 0x7a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, + 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2808,13 +2572,12 @@ var file_did_v1_state_proto_goTypes = []interface{}{ (*PubKey)(nil), // 3: did.v1.PubKey } var file_did_v1_state_proto_depIdxs = []int32{ - 3, // 0: did.v1.Controller.public_key:type_name -> did.v1.PubKey - 3, // 1: did.v1.Verification.public_key:type_name -> did.v1.PubKey - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 3, // 0: did.v1.Verification.public_key:type_name -> did.v1.PubKey + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_did_v1_state_proto_init() } diff --git a/api/did/v1/tx.pulsar.go b/api/did/v1/tx.pulsar.go index 0232e6220..e74a86fc2 100644 --- a/api/did/v1/tx.pulsar.go +++ b/api/did/v1/tx.pulsar.go @@ -16,1140 +16,6 @@ import ( sync "sync" ) -var ( - md_MsgAllocateVault protoreflect.MessageDescriptor - fd_MsgAllocateVault_authority protoreflect.FieldDescriptor - fd_MsgAllocateVault_subject protoreflect.FieldDescriptor - fd_MsgAllocateVault_origin protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_tx_proto_init() - md_MsgAllocateVault = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVault") - fd_MsgAllocateVault_authority = md_MsgAllocateVault.Fields().ByName("authority") - fd_MsgAllocateVault_subject = md_MsgAllocateVault.Fields().ByName("subject") - fd_MsgAllocateVault_origin = md_MsgAllocateVault.Fields().ByName("origin") -} - -var _ protoreflect.Message = (*fastReflection_MsgAllocateVault)(nil) - -type fastReflection_MsgAllocateVault MsgAllocateVault - -func (x *MsgAllocateVault) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgAllocateVault)(x) -} - -func (x *MsgAllocateVault) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_MsgAllocateVault_messageType fastReflection_MsgAllocateVault_messageType -var _ protoreflect.MessageType = fastReflection_MsgAllocateVault_messageType{} - -type fastReflection_MsgAllocateVault_messageType struct{} - -func (x fastReflection_MsgAllocateVault_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgAllocateVault)(nil) -} -func (x fastReflection_MsgAllocateVault_messageType) New() protoreflect.Message { - return new(fastReflection_MsgAllocateVault) -} -func (x fastReflection_MsgAllocateVault_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAllocateVault -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_MsgAllocateVault) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAllocateVault -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgAllocateVault) Type() protoreflect.MessageType { - return _fastReflection_MsgAllocateVault_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgAllocateVault) New() protoreflect.Message { - return new(fastReflection_MsgAllocateVault) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgAllocateVault) Interface() protoreflect.ProtoMessage { - return (*MsgAllocateVault)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_MsgAllocateVault) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Authority != "" { - value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgAllocateVault_authority, value) { - return - } - } - if x.Subject != "" { - value := protoreflect.ValueOfString(x.Subject) - if !f(fd_MsgAllocateVault_subject, value) { - return - } - } - if x.Origin != "" { - value := protoreflect.ValueOfString(x.Origin) - if !f(fd_MsgAllocateVault_origin, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgAllocateVault) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.MsgAllocateVault.authority": - return x.Authority != "" - case "did.v1.MsgAllocateVault.subject": - return x.Subject != "" - case "did.v1.MsgAllocateVault.origin": - return x.Origin != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVault) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.MsgAllocateVault.authority": - x.Authority = "" - case "did.v1.MsgAllocateVault.subject": - x.Subject = "" - case "did.v1.MsgAllocateVault.origin": - x.Origin = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgAllocateVault) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.MsgAllocateVault.authority": - value := x.Authority - return protoreflect.ValueOfString(value) - case "did.v1.MsgAllocateVault.subject": - value := x.Subject - return protoreflect.ValueOfString(value) - case "did.v1.MsgAllocateVault.origin": - value := x.Origin - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVault) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.MsgAllocateVault.authority": - x.Authority = value.Interface().(string) - case "did.v1.MsgAllocateVault.subject": - x.Subject = value.Interface().(string) - case "did.v1.MsgAllocateVault.origin": - x.Origin = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVault) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.MsgAllocateVault.authority": - panic(fmt.Errorf("field authority of message did.v1.MsgAllocateVault is not mutable")) - case "did.v1.MsgAllocateVault.subject": - panic(fmt.Errorf("field subject of message did.v1.MsgAllocateVault is not mutable")) - case "did.v1.MsgAllocateVault.origin": - panic(fmt.Errorf("field origin of message did.v1.MsgAllocateVault is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgAllocateVault) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.MsgAllocateVault.authority": - return protoreflect.ValueOfString("") - case "did.v1.MsgAllocateVault.subject": - return protoreflect.ValueOfString("") - case "did.v1.MsgAllocateVault.origin": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgAllocateVault) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVault", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgAllocateVault) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVault) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_MsgAllocateVault) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_MsgAllocateVault) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgAllocateVault) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Authority) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Subject) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Origin) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgAllocateVault) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Origin) > 0 { - i -= len(x.Origin) - copy(dAtA[i:], x.Origin) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) - i-- - dAtA[i] = 0x1a - } - if len(x.Subject) > 0 { - i -= len(x.Subject) - copy(dAtA[i:], x.Subject) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) - i-- - dAtA[i] = 0x12 - } - if len(x.Authority) > 0 { - i -= len(x.Authority) - copy(dAtA[i:], x.Authority) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgAllocateVault) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Authority = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Subject = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Origin = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_MsgAllocateVaultResponse protoreflect.MessageDescriptor - fd_MsgAllocateVaultResponse_cid protoreflect.FieldDescriptor - fd_MsgAllocateVaultResponse_expiry_block protoreflect.FieldDescriptor - fd_MsgAllocateVaultResponse_token protoreflect.FieldDescriptor - fd_MsgAllocateVaultResponse_localhost protoreflect.FieldDescriptor -) - -func init() { - file_did_v1_tx_proto_init() - md_MsgAllocateVaultResponse = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVaultResponse") - fd_MsgAllocateVaultResponse_cid = md_MsgAllocateVaultResponse.Fields().ByName("cid") - fd_MsgAllocateVaultResponse_expiry_block = md_MsgAllocateVaultResponse.Fields().ByName("expiry_block") - fd_MsgAllocateVaultResponse_token = md_MsgAllocateVaultResponse.Fields().ByName("token") - fd_MsgAllocateVaultResponse_localhost = md_MsgAllocateVaultResponse.Fields().ByName("localhost") -} - -var _ protoreflect.Message = (*fastReflection_MsgAllocateVaultResponse)(nil) - -type fastReflection_MsgAllocateVaultResponse MsgAllocateVaultResponse - -func (x *MsgAllocateVaultResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgAllocateVaultResponse)(x) -} - -func (x *MsgAllocateVaultResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_MsgAllocateVaultResponse_messageType fastReflection_MsgAllocateVaultResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgAllocateVaultResponse_messageType{} - -type fastReflection_MsgAllocateVaultResponse_messageType struct{} - -func (x fastReflection_MsgAllocateVaultResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgAllocateVaultResponse)(nil) -} -func (x fastReflection_MsgAllocateVaultResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgAllocateVaultResponse) -} -func (x fastReflection_MsgAllocateVaultResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAllocateVaultResponse -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_MsgAllocateVaultResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgAllocateVaultResponse -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgAllocateVaultResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgAllocateVaultResponse_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgAllocateVaultResponse) New() protoreflect.Message { - return new(fastReflection_MsgAllocateVaultResponse) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgAllocateVaultResponse) Interface() protoreflect.ProtoMessage { - return (*MsgAllocateVaultResponse)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_MsgAllocateVaultResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Cid != "" { - value := protoreflect.ValueOfString(x.Cid) - if !f(fd_MsgAllocateVaultResponse_cid, value) { - return - } - } - if x.ExpiryBlock != int64(0) { - value := protoreflect.ValueOfInt64(x.ExpiryBlock) - if !f(fd_MsgAllocateVaultResponse_expiry_block, value) { - return - } - } - if x.Token != "" { - value := protoreflect.ValueOfString(x.Token) - if !f(fd_MsgAllocateVaultResponse_token, value) { - return - } - } - if x.Localhost != false { - value := protoreflect.ValueOfBool(x.Localhost) - if !f(fd_MsgAllocateVaultResponse_localhost, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgAllocateVaultResponse) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - return x.Cid != "" - case "did.v1.MsgAllocateVaultResponse.expiry_block": - return x.ExpiryBlock != int64(0) - case "did.v1.MsgAllocateVaultResponse.token": - return x.Token != "" - case "did.v1.MsgAllocateVaultResponse.localhost": - return x.Localhost != false - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVaultResponse) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - x.Cid = "" - case "did.v1.MsgAllocateVaultResponse.expiry_block": - x.ExpiryBlock = int64(0) - case "did.v1.MsgAllocateVaultResponse.token": - x.Token = "" - case "did.v1.MsgAllocateVaultResponse.localhost": - x.Localhost = false - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgAllocateVaultResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - value := x.Cid - return protoreflect.ValueOfString(value) - case "did.v1.MsgAllocateVaultResponse.expiry_block": - value := x.ExpiryBlock - return protoreflect.ValueOfInt64(value) - case "did.v1.MsgAllocateVaultResponse.token": - value := x.Token - return protoreflect.ValueOfString(value) - case "did.v1.MsgAllocateVaultResponse.localhost": - value := x.Localhost - return protoreflect.ValueOfBool(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVaultResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - x.Cid = value.Interface().(string) - case "did.v1.MsgAllocateVaultResponse.expiry_block": - x.ExpiryBlock = value.Int() - case "did.v1.MsgAllocateVaultResponse.token": - x.Token = value.Interface().(string) - case "did.v1.MsgAllocateVaultResponse.localhost": - x.Localhost = value.Bool() - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVaultResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - panic(fmt.Errorf("field cid of message did.v1.MsgAllocateVaultResponse is not mutable")) - case "did.v1.MsgAllocateVaultResponse.expiry_block": - panic(fmt.Errorf("field expiry_block of message did.v1.MsgAllocateVaultResponse is not mutable")) - case "did.v1.MsgAllocateVaultResponse.token": - panic(fmt.Errorf("field token of message did.v1.MsgAllocateVaultResponse is not mutable")) - case "did.v1.MsgAllocateVaultResponse.localhost": - panic(fmt.Errorf("field localhost of message did.v1.MsgAllocateVaultResponse is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgAllocateVaultResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "did.v1.MsgAllocateVaultResponse.cid": - return protoreflect.ValueOfString("") - case "did.v1.MsgAllocateVaultResponse.expiry_block": - return protoreflect.ValueOfInt64(int64(0)) - case "did.v1.MsgAllocateVaultResponse.token": - return protoreflect.ValueOfString("") - case "did.v1.MsgAllocateVaultResponse.localhost": - return protoreflect.ValueOfBool(false) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse")) - } - panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgAllocateVaultResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVaultResponse", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgAllocateVaultResponse) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgAllocateVaultResponse) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_MsgAllocateVaultResponse) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_MsgAllocateVaultResponse) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgAllocateVaultResponse) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Cid) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.ExpiryBlock != 0 { - n += 1 + runtime.Sov(uint64(x.ExpiryBlock)) - } - l = len(x.Token) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Localhost { - n += 2 - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgAllocateVaultResponse) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if x.Localhost { - i-- - if x.Localhost { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if len(x.Token) > 0 { - i -= len(x.Token) - copy(dAtA[i:], x.Token) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) - i-- - dAtA[i] = 0x1a - } - if x.ExpiryBlock != 0 { - i = runtime.EncodeVarint(dAtA, i, uint64(x.ExpiryBlock)) - i-- - dAtA[i] = 0x10 - } - if len(x.Cid) > 0 { - i -= len(x.Cid) - copy(dAtA[i:], x.Cid) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Cid))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgAllocateVaultResponse) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Cid = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) - } - x.ExpiryBlock = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - x.ExpiryBlock |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Token = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Localhost", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - x.Localhost = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - var _ protoreflect.List = (*_MsgRegisterController_2_list)(nil) type _MsgRegisterController_2_list struct { @@ -1314,7 +180,7 @@ func (x *MsgRegisterController) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterController) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[2] + mi := &file_did_v1_tx_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2048,7 +914,7 @@ func (x *MsgRegisterControllerResponse) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterControllerResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[3] + mi := &file_did_v1_tx_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2826,7 +1692,7 @@ func (x *MsgExecuteTx) ProtoReflect() protoreflect.Message { } func (x *MsgExecuteTx) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[4] + mi := &file_did_v1_tx_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3532,7 +2398,7 @@ func (x *MsgExecuteTxResponse) ProtoReflect() protoreflect.Message { } func (x *MsgExecuteTxResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[5] + mi := &file_did_v1_tx_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4092,7 +2958,7 @@ func (x *MsgAuthorizeService) ProtoReflect() protoreflect.Message { } func (x *MsgAuthorizeService) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[6] + mi := &file_did_v1_tx_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4858,7 +3724,7 @@ func (x *MsgAuthorizeServiceResponse) ProtoReflect() protoreflect.Message { } func (x *MsgAuthorizeServiceResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[7] + mi := &file_did_v1_tx_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5332,7 +4198,7 @@ func (x *MsgRegisterService) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterService) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[8] + mi := &file_did_v1_tx_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5831,7 +4697,7 @@ func (x *MsgRegisterServiceResponse) ProtoReflect() protoreflect.Message { } func (x *MsgRegisterServiceResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[9] + mi := &file_did_v1_tx_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6307,7 +5173,7 @@ func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { } func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[10] + mi := &file_did_v1_tx_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6864,7 +5730,7 @@ func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { } func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_did_v1_tx_proto_msgTypes[11] + mi := &file_did_v1_tx_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7215,125 +6081,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// MsgAllocateVault is the message type for the AllocateVault RPC. -type MsgAllocateVault struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // authority is the address of the service account. - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // subject is a unique human-defined identifier to associate with the vault. - Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` - // origin is the origin of the request in wildcard form. - Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (x *MsgAllocateVault) Reset() { - *x = MsgAllocateVault{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MsgAllocateVault) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MsgAllocateVault) ProtoMessage() {} - -// Deprecated: Use MsgAllocateVault.ProtoReflect.Descriptor instead. -func (*MsgAllocateVault) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{0} -} - -func (x *MsgAllocateVault) GetAuthority() string { - if x != nil { - return x.Authority - } - return "" -} - -func (x *MsgAllocateVault) GetSubject() string { - if x != nil { - return x.Subject - } - return "" -} - -func (x *MsgAllocateVault) GetOrigin() string { - if x != nil { - return x.Origin - } - return "" -} - -// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. -type MsgAllocateVaultResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // CID is the content identifier of the vault. - Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` - // ExpiryBlock is the block number at which the vault will expire. - ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` - // RegistrationOptions is a json string of the PublicKeyCredentialCreationOptions for WebAuthn - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - // IsLocalhost is a flag to indicate if the vault is localhost - Localhost bool `protobuf:"varint,4,opt,name=localhost,proto3" json:"localhost,omitempty"` -} - -func (x *MsgAllocateVaultResponse) Reset() { - *x = MsgAllocateVaultResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MsgAllocateVaultResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MsgAllocateVaultResponse) ProtoMessage() {} - -// Deprecated: Use MsgAllocateVaultResponse.ProtoReflect.Descriptor instead. -func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{1} -} - -func (x *MsgAllocateVaultResponse) GetCid() string { - if x != nil { - return x.Cid - } - return "" -} - -func (x *MsgAllocateVaultResponse) GetExpiryBlock() int64 { - if x != nil { - return x.ExpiryBlock - } - return 0 -} - -func (x *MsgAllocateVaultResponse) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -func (x *MsgAllocateVaultResponse) GetLocalhost() bool { - if x != nil { - return x.Localhost - } - return false -} - // MsgRegisterController is the message type for the InitializeController RPC. type MsgRegisterController struct { state protoimpl.MessageState @@ -7346,14 +6093,15 @@ type MsgRegisterController struct { Assertions [][]byte `protobuf:"bytes,2,rep,name=assertions,proto3" json:"assertions,omitempty"` // Keyshares is the list of keyshares to initialize the controller with. Keyshares [][]byte `protobuf:"bytes,3,rep,name=keyshares,proto3" json:"keyshares,omitempty"` - // Verifications is the list of verifications to initialize the controller with. + // Verifications is the list of verifications to initialize the controller + // with. Verifications [][]byte `protobuf:"bytes,4,rep,name=verifications,proto3" json:"verifications,omitempty"` } func (x *MsgRegisterController) Reset() { *x = MsgRegisterController{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[2] + mi := &file_did_v1_tx_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7367,7 +6115,7 @@ func (*MsgRegisterController) ProtoMessage() {} // Deprecated: Use MsgRegisterController.ProtoReflect.Descriptor instead. func (*MsgRegisterController) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{2} + return file_did_v1_tx_proto_rawDescGZIP(), []int{0} } func (x *MsgRegisterController) GetAuthority() string { @@ -7398,13 +6146,15 @@ func (x *MsgRegisterController) GetVerifications() [][]byte { return nil } -// MsgRegisterControllerResponse is the response type for the InitializeController RPC. +// MsgRegisterControllerResponse is the response type for the +// InitializeController RPC. type MsgRegisterControllerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Success returns true if the specified cid is valid and not already encrypted. + // Success returns true if the specified cid is valid and not already + // encrypted. Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Controller is the address of the initialized controller. Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` @@ -7415,7 +6165,7 @@ type MsgRegisterControllerResponse struct { func (x *MsgRegisterControllerResponse) Reset() { *x = MsgRegisterControllerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[3] + mi := &file_did_v1_tx_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7429,7 +6179,7 @@ func (*MsgRegisterControllerResponse) ProtoMessage() {} // Deprecated: Use MsgRegisterControllerResponse.ProtoReflect.Descriptor instead. func (*MsgRegisterControllerResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{3} + return file_did_v1_tx_proto_rawDescGZIP(), []int{1} } func (x *MsgRegisterControllerResponse) GetSuccess() bool { @@ -7470,7 +6220,7 @@ type MsgExecuteTx struct { func (x *MsgExecuteTx) Reset() { *x = MsgExecuteTx{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[4] + mi := &file_did_v1_tx_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7484,7 +6234,7 @@ func (*MsgExecuteTx) ProtoMessage() {} // Deprecated: Use MsgExecuteTx.ProtoReflect.Descriptor instead. func (*MsgExecuteTx) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{4} + return file_did_v1_tx_proto_rawDescGZIP(), []int{2} } func (x *MsgExecuteTx) GetController() string { @@ -7521,7 +6271,7 @@ type MsgExecuteTxResponse struct { func (x *MsgExecuteTxResponse) Reset() { *x = MsgExecuteTxResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[5] + mi := &file_did_v1_tx_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7535,7 +6285,7 @@ func (*MsgExecuteTxResponse) ProtoMessage() {} // Deprecated: Use MsgExecuteTxResponse.ProtoReflect.Descriptor instead. func (*MsgExecuteTxResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{5} + return file_did_v1_tx_proto_rawDescGZIP(), []int{3} } func (x *MsgExecuteTxResponse) GetSuccess() bool { @@ -7571,7 +6321,7 @@ type MsgAuthorizeService struct { func (x *MsgAuthorizeService) Reset() { *x = MsgAuthorizeService{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[6] + mi := &file_did_v1_tx_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7585,7 +6335,7 @@ func (*MsgAuthorizeService) ProtoMessage() {} // Deprecated: Use MsgAuthorizeService.ProtoReflect.Descriptor instead. func (*MsgAuthorizeService) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{6} + return file_did_v1_tx_proto_rawDescGZIP(), []int{4} } func (x *MsgAuthorizeService) GetController() string { @@ -7616,7 +6366,8 @@ func (x *MsgAuthorizeService) GetToken() string { return "" } -// MsgAuthorizeServiceResponse is the response type for the AuthorizeService RPC. +// MsgAuthorizeServiceResponse is the response type for the AuthorizeService +// RPC. type MsgAuthorizeServiceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7629,7 +6380,7 @@ type MsgAuthorizeServiceResponse struct { func (x *MsgAuthorizeServiceResponse) Reset() { *x = MsgAuthorizeServiceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[7] + mi := &file_did_v1_tx_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7643,7 +6394,7 @@ func (*MsgAuthorizeServiceResponse) ProtoMessage() {} // Deprecated: Use MsgAuthorizeServiceResponse.ProtoReflect.Descriptor instead. func (*MsgAuthorizeServiceResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{7} + return file_did_v1_tx_proto_rawDescGZIP(), []int{5} } func (x *MsgAuthorizeServiceResponse) GetSuccess() bool { @@ -7668,14 +6419,15 @@ type MsgRegisterService struct { // authority is the address of the governance account. Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` - // origin is the origin of the request in wildcard form. Requires valid TXT record in DNS. + // origin is the origin of the request in wildcard form. Requires valid TXT + // record in DNS. Service *Service `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"` } func (x *MsgRegisterService) Reset() { *x = MsgRegisterService{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[8] + mi := &file_did_v1_tx_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7689,7 +6441,7 @@ func (*MsgRegisterService) ProtoMessage() {} // Deprecated: Use MsgRegisterService.ProtoReflect.Descriptor instead. func (*MsgRegisterService) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{8} + return file_did_v1_tx_proto_rawDescGZIP(), []int{6} } func (x *MsgRegisterService) GetController() string { @@ -7719,7 +6471,7 @@ type MsgRegisterServiceResponse struct { func (x *MsgRegisterServiceResponse) Reset() { *x = MsgRegisterServiceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[9] + mi := &file_did_v1_tx_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7733,7 +6485,7 @@ func (*MsgRegisterServiceResponse) ProtoMessage() {} // Deprecated: Use MsgRegisterServiceResponse.ProtoReflect.Descriptor instead. func (*MsgRegisterServiceResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{9} + return file_did_v1_tx_proto_rawDescGZIP(), []int{7} } func (x *MsgRegisterServiceResponse) GetSuccess() bool { @@ -7769,7 +6521,7 @@ type MsgUpdateParams struct { func (x *MsgUpdateParams) Reset() { *x = MsgUpdateParams{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[10] + mi := &file_did_v1_tx_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7783,7 +6535,7 @@ func (*MsgUpdateParams) ProtoMessage() {} // Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{10} + return file_did_v1_tx_proto_rawDescGZIP(), []int{8} } func (x *MsgUpdateParams) GetAuthority() string { @@ -7820,7 +6572,7 @@ type MsgUpdateParamsResponse struct { func (x *MsgUpdateParamsResponse) Reset() { *x = MsgUpdateParamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_did_v1_tx_proto_msgTypes[11] + mi := &file_did_v1_tx_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7834,7 +6586,7 @@ func (*MsgUpdateParamsResponse) ProtoMessage() {} // Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return file_did_v1_tx_proto_rawDescGZIP(), []int{11} + return file_did_v1_tx_proto_rawDescGZIP(), []int{9} } var File_did_v1_tx_proto protoreflect.FileDescriptor @@ -7847,161 +6599,138 @@ var file_did_v1_tx_proto_rawDesc = []byte{ 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x4d, 0x73, - 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, - 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x79, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22, 0xc3, - 0x01, 0x0a, 0x15, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, - 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0c, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x24, - 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x22, 0x81, 0x02, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, - 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x63, - 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x22, 0x9e, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc3, 0x01, 0x0a, 0x15, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6b, + 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, + 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, + 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, + 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, + 0x81, 0x02, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x4e, 0x0a, - 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, - 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x22, 0x48, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x02, 0x38, 0x01, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x54, 0x78, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x3e, + 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x22, 0x9e, + 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x4e, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3e, + 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x0f, + 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, + 0x4d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, - 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe9, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x4b, 0x0a, - 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x18, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, - 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, - 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x23, 0x2e, 0x64, 0x69, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3f, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x12, 0x14, 0x2e, - 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x54, 0x78, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, - 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x1a, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x22, 0x2e, 0x64, - 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x48, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, - 0x01, 0x42, 0x77, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, - 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, - 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, - 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, - 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, + 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, + 0x29, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22, 0x48, 0x0a, 0x1a, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0x9c, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x64, + 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x23, 0x2e, 0x64, 0x69, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, + 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x12, 0x14, 0x2e, 0x64, 0x69, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, + 0x78, 0x1a, 0x1c, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5a, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x22, 0x2e, 0x64, 0x69, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x17, + 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, + 0x77, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, + 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x3b, 0x64, 0x69, 0x64, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44, 0x69, 0x64, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x12, 0x44, 0x69, 0x64, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8016,46 +6745,42 @@ func file_did_v1_tx_proto_rawDescGZIP() []byte { return file_did_v1_tx_proto_rawDescData } -var file_did_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_did_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_did_v1_tx_proto_goTypes = []interface{}{ - (*MsgAllocateVault)(nil), // 0: did.v1.MsgAllocateVault - (*MsgAllocateVaultResponse)(nil), // 1: did.v1.MsgAllocateVaultResponse - (*MsgRegisterController)(nil), // 2: did.v1.MsgRegisterController - (*MsgRegisterControllerResponse)(nil), // 3: did.v1.MsgRegisterControllerResponse - (*MsgExecuteTx)(nil), // 4: did.v1.MsgExecuteTx - (*MsgExecuteTxResponse)(nil), // 5: did.v1.MsgExecuteTxResponse - (*MsgAuthorizeService)(nil), // 6: did.v1.MsgAuthorizeService - (*MsgAuthorizeServiceResponse)(nil), // 7: did.v1.MsgAuthorizeServiceResponse - (*MsgRegisterService)(nil), // 8: did.v1.MsgRegisterService - (*MsgRegisterServiceResponse)(nil), // 9: did.v1.MsgRegisterServiceResponse - (*MsgUpdateParams)(nil), // 10: did.v1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 11: did.v1.MsgUpdateParamsResponse - nil, // 12: did.v1.MsgRegisterControllerResponse.AccountsEntry - nil, // 13: did.v1.MsgExecuteTx.MessagesEntry - nil, // 14: did.v1.MsgAuthorizeService.PermissionsEntry - (*Service)(nil), // 15: did.v1.Service - (*Params)(nil), // 16: did.v1.Params + (*MsgRegisterController)(nil), // 0: did.v1.MsgRegisterController + (*MsgRegisterControllerResponse)(nil), // 1: did.v1.MsgRegisterControllerResponse + (*MsgExecuteTx)(nil), // 2: did.v1.MsgExecuteTx + (*MsgExecuteTxResponse)(nil), // 3: did.v1.MsgExecuteTxResponse + (*MsgAuthorizeService)(nil), // 4: did.v1.MsgAuthorizeService + (*MsgAuthorizeServiceResponse)(nil), // 5: did.v1.MsgAuthorizeServiceResponse + (*MsgRegisterService)(nil), // 6: did.v1.MsgRegisterService + (*MsgRegisterServiceResponse)(nil), // 7: did.v1.MsgRegisterServiceResponse + (*MsgUpdateParams)(nil), // 8: did.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 9: did.v1.MsgUpdateParamsResponse + nil, // 10: did.v1.MsgRegisterControllerResponse.AccountsEntry + nil, // 11: did.v1.MsgExecuteTx.MessagesEntry + nil, // 12: did.v1.MsgAuthorizeService.PermissionsEntry + (*Service)(nil), // 13: did.v1.Service + (*Params)(nil), // 14: did.v1.Params } var file_did_v1_tx_proto_depIdxs = []int32{ - 12, // 0: did.v1.MsgRegisterControllerResponse.accounts:type_name -> did.v1.MsgRegisterControllerResponse.AccountsEntry - 13, // 1: did.v1.MsgExecuteTx.messages:type_name -> did.v1.MsgExecuteTx.MessagesEntry - 14, // 2: did.v1.MsgAuthorizeService.permissions:type_name -> did.v1.MsgAuthorizeService.PermissionsEntry - 15, // 3: did.v1.MsgRegisterService.service:type_name -> did.v1.Service - 16, // 4: did.v1.MsgUpdateParams.params:type_name -> did.v1.Params - 0, // 5: did.v1.Msg.AllocateVault:input_type -> did.v1.MsgAllocateVault - 6, // 6: did.v1.Msg.AuthorizeService:input_type -> did.v1.MsgAuthorizeService - 4, // 7: did.v1.Msg.ExecuteTx:input_type -> did.v1.MsgExecuteTx - 2, // 8: did.v1.Msg.RegisterController:input_type -> did.v1.MsgRegisterController - 8, // 9: did.v1.Msg.RegisterService:input_type -> did.v1.MsgRegisterService - 10, // 10: did.v1.Msg.UpdateParams:input_type -> did.v1.MsgUpdateParams - 1, // 11: did.v1.Msg.AllocateVault:output_type -> did.v1.MsgAllocateVaultResponse - 7, // 12: did.v1.Msg.AuthorizeService:output_type -> did.v1.MsgAuthorizeServiceResponse - 5, // 13: did.v1.Msg.ExecuteTx:output_type -> did.v1.MsgExecuteTxResponse - 3, // 14: did.v1.Msg.RegisterController:output_type -> did.v1.MsgRegisterControllerResponse - 9, // 15: did.v1.Msg.RegisterService:output_type -> did.v1.MsgRegisterServiceResponse - 11, // 16: did.v1.Msg.UpdateParams:output_type -> did.v1.MsgUpdateParamsResponse - 11, // [11:17] is the sub-list for method output_type - 5, // [5:11] is the sub-list for method input_type + 10, // 0: did.v1.MsgRegisterControllerResponse.accounts:type_name -> did.v1.MsgRegisterControllerResponse.AccountsEntry + 11, // 1: did.v1.MsgExecuteTx.messages:type_name -> did.v1.MsgExecuteTx.MessagesEntry + 12, // 2: did.v1.MsgAuthorizeService.permissions:type_name -> did.v1.MsgAuthorizeService.PermissionsEntry + 13, // 3: did.v1.MsgRegisterService.service:type_name -> did.v1.Service + 14, // 4: did.v1.MsgUpdateParams.params:type_name -> did.v1.Params + 4, // 5: did.v1.Msg.AuthorizeService:input_type -> did.v1.MsgAuthorizeService + 2, // 6: did.v1.Msg.ExecuteTx:input_type -> did.v1.MsgExecuteTx + 0, // 7: did.v1.Msg.RegisterController:input_type -> did.v1.MsgRegisterController + 6, // 8: did.v1.Msg.RegisterService:input_type -> did.v1.MsgRegisterService + 8, // 9: did.v1.Msg.UpdateParams:input_type -> did.v1.MsgUpdateParams + 5, // 10: did.v1.Msg.AuthorizeService:output_type -> did.v1.MsgAuthorizeServiceResponse + 3, // 11: did.v1.Msg.ExecuteTx:output_type -> did.v1.MsgExecuteTxResponse + 1, // 12: did.v1.Msg.RegisterController:output_type -> did.v1.MsgRegisterControllerResponse + 7, // 13: did.v1.Msg.RegisterService:output_type -> did.v1.MsgRegisterServiceResponse + 9, // 14: did.v1.Msg.UpdateParams:output_type -> did.v1.MsgUpdateParamsResponse + 10, // [10:15] is the sub-list for method output_type + 5, // [5:10] is the sub-list for method input_type 5, // [5:5] is the sub-list for extension type_name 5, // [5:5] is the sub-list for extension extendee 0, // [0:5] is the sub-list for field type_name @@ -8069,30 +6794,6 @@ func file_did_v1_tx_proto_init() { file_did_v1_genesis_proto_init() if !protoimpl.UnsafeEnabled { file_did_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgAllocateVault); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgAllocateVaultResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_did_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgRegisterController); i { case 0: return &v.state @@ -8104,7 +6805,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgRegisterControllerResponse); i { case 0: return &v.state @@ -8116,7 +6817,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgExecuteTx); i { case 0: return &v.state @@ -8128,7 +6829,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgExecuteTxResponse); i { case 0: return &v.state @@ -8140,7 +6841,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgAuthorizeService); i { case 0: return &v.state @@ -8152,7 +6853,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgAuthorizeServiceResponse); i { case 0: return &v.state @@ -8164,7 +6865,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgRegisterService); i { case 0: return &v.state @@ -8176,7 +6877,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgRegisterServiceResponse); i { case 0: return &v.state @@ -8188,7 +6889,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgUpdateParams); i { case 0: return &v.state @@ -8200,7 +6901,7 @@ func file_did_v1_tx_proto_init() { return nil } } - file_did_v1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_did_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgUpdateParamsResponse); i { case 0: return &v.state @@ -8219,7 +6920,7 @@ func file_did_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_did_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 13, NumExtensions: 0, NumServices: 1, }, diff --git a/api/did/v1/tx_grpc.pb.go b/api/did/v1/tx_grpc.pb.go index 8dd2d5d05..1bb32f68a 100644 --- a/api/did/v1/tx_grpc.pb.go +++ b/api/did/v1/tx_grpc.pb.go @@ -19,7 +19,6 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_AllocateVault_FullMethodName = "/did.v1.Msg/AllocateVault" Msg_AuthorizeService_FullMethodName = "/did.v1.Msg/AuthorizeService" Msg_ExecuteTx_FullMethodName = "/did.v1.Msg/ExecuteTx" Msg_RegisterController_FullMethodName = "/did.v1.Msg/RegisterController" @@ -31,16 +30,17 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type MsgClient interface { - // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. - // this operation is called by services initiating a controller registration. - AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) - // AuthorizeService asserts the given controller is the owner of the given address. + // AuthorizeService asserts the given controller is the owner of the given + // address. AuthorizeService(ctx context.Context, in *MsgAuthorizeService, opts ...grpc.CallOption) (*MsgAuthorizeServiceResponse, error) - // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages Macaroon for verification. + // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages + // Macaroon for verification. ExecuteTx(ctx context.Context, in *MsgExecuteTx, opts ...grpc.CallOption) (*MsgExecuteTxResponse, error) - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + // RegisterController initializes a controller with the given authentication + // set, address, cid, publicKey, and user-defined alias. RegisterController(ctx context.Context, in *MsgRegisterController, opts ...grpc.CallOption) (*MsgRegisterControllerResponse, error) - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + // RegisterService initializes a Service with a given permission scope and + // URI. The domain must have a valid TXT record containing the public key. RegisterService(ctx context.Context, in *MsgRegisterService, opts ...grpc.CallOption) (*MsgRegisterServiceResponse, error) // UpdateParams defines a governance operation for updating the parameters. UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) @@ -54,15 +54,6 @@ func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { return &msgClient{cc} } -func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { - out := new(MsgAllocateVaultResponse) - err := c.cc.Invoke(ctx, Msg_AllocateVault_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) AuthorizeService(ctx context.Context, in *MsgAuthorizeService, opts ...grpc.CallOption) (*MsgAuthorizeServiceResponse, error) { out := new(MsgAuthorizeServiceResponse) err := c.cc.Invoke(ctx, Msg_AuthorizeService_FullMethodName, in, out, opts...) @@ -112,16 +103,17 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts // All implementations must embed UnimplementedMsgServer // for forward compatibility type MsgServer interface { - // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. - // this operation is called by services initiating a controller registration. - AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) - // AuthorizeService asserts the given controller is the owner of the given address. + // AuthorizeService asserts the given controller is the owner of the given + // address. AuthorizeService(context.Context, *MsgAuthorizeService) (*MsgAuthorizeServiceResponse, error) - // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages Macaroon for verification. + // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages + // Macaroon for verification. ExecuteTx(context.Context, *MsgExecuteTx) (*MsgExecuteTxResponse, error) - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + // RegisterController initializes a controller with the given authentication + // set, address, cid, publicKey, and user-defined alias. RegisterController(context.Context, *MsgRegisterController) (*MsgRegisterControllerResponse, error) - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + // RegisterService initializes a Service with a given permission scope and + // URI. The domain must have a valid TXT record containing the public key. RegisterService(context.Context, *MsgRegisterService) (*MsgRegisterServiceResponse, error) // UpdateParams defines a governance operation for updating the parameters. UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) @@ -132,9 +124,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (UnimplementedMsgServer) AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") -} func (UnimplementedMsgServer) AuthorizeService(context.Context, *MsgAuthorizeService) (*MsgAuthorizeServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AuthorizeService not implemented") } @@ -163,24 +152,6 @@ func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { s.RegisterService(&Msg_ServiceDesc, srv) } -func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAllocateVault) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).AllocateVault(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Msg_AllocateVault_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_AuthorizeService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgAuthorizeService) if err := dec(in); err != nil { @@ -278,10 +249,6 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ ServiceName: "did.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "AllocateVault", - Handler: _Msg_AllocateVault_Handler, - }, { MethodName: "AuthorizeService", Handler: _Msg_AuthorizeService_Handler, diff --git a/api/vault/module/v1/module.pulsar.go b/api/vault/module/v1/module.pulsar.go new file mode 100644 index 000000000..1789eae62 --- /dev/null +++ b/api/vault/module/v1/module.pulsar.go @@ -0,0 +1,499 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package modulev1 + +import ( + _ "cosmossdk.io/api/cosmos/app/v1alpha1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Module protoreflect.MessageDescriptor +) + +func init() { + file_vault_module_v1_module_proto_init() + md_Module = File_vault_module_v1_module_proto.Messages().ByName("Module") +} + +var _ protoreflect.Message = (*fastReflection_Module)(nil) + +type fastReflection_Module Module + +func (x *Module) ProtoReflect() protoreflect.Message { + return (*fastReflection_Module)(x) +} + +func (x *Module) slowProtoReflect() protoreflect.Message { + mi := &file_vault_module_v1_module_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Module_messageType fastReflection_Module_messageType +var _ protoreflect.MessageType = fastReflection_Module_messageType{} + +type fastReflection_Module_messageType struct{} + +func (x fastReflection_Module_messageType) Zero() protoreflect.Message { + return (*fastReflection_Module)(nil) +} +func (x fastReflection_Module_messageType) New() protoreflect.Message { + return new(fastReflection_Module) +} +func (x fastReflection_Module_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Module) Descriptor() protoreflect.MessageDescriptor { + return md_Module +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Module) Type() protoreflect.MessageType { + return _fastReflection_Module_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Module) New() protoreflect.Message { + return new(fastReflection_Module) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Module) Interface() protoreflect.ProtoMessage { + return (*Module)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Module) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Module) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Module) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Module) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.module.v1.Module")) + } + panic(fmt.Errorf("message vault.module.v1.Module does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Module) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.module.v1.Module", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Module) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Module) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Module) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Module) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Module) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Module: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: vault/module/v1/module.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Module is the app config object of the module. +// Learn more: https://docs.cosmos.network/main/building-modules/depinject +type Module struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Module) Reset() { + *x = Module{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_module_v1_module_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Module) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Module) ProtoMessage() {} + +// Deprecated: Use Module.ProtoReflect.Descriptor instead. +func (*Module) Descriptor() ([]byte, []int) { + return file_vault_module_v1_module_proto_rawDescGZIP(), []int{0} +} + +var File_vault_module_v1_module_proto protoreflect.FileDescriptor + +var file_vault_module_v1_module_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, + 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, + 0x20, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x28, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x1e, 0xba, 0xc0, 0x96, + 0xda, 0x01, 0x18, 0x0a, 0x16, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x42, 0xb5, 0x01, 0x0a, 0x13, + 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x4d, 0x58, 0xaa, 0x02, 0x0f, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0f, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1b, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x11, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x3a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_vault_module_v1_module_proto_rawDescOnce sync.Once + file_vault_module_v1_module_proto_rawDescData = file_vault_module_v1_module_proto_rawDesc +) + +func file_vault_module_v1_module_proto_rawDescGZIP() []byte { + file_vault_module_v1_module_proto_rawDescOnce.Do(func() { + file_vault_module_v1_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_vault_module_v1_module_proto_rawDescData) + }) + return file_vault_module_v1_module_proto_rawDescData +} + +var file_vault_module_v1_module_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_vault_module_v1_module_proto_goTypes = []interface{}{ + (*Module)(nil), // 0: vault.module.v1.Module +} +var file_vault_module_v1_module_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_vault_module_v1_module_proto_init() } +func file_vault_module_v1_module_proto_init() { + if File_vault_module_v1_module_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_vault_module_v1_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Module); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vault_module_v1_module_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_vault_module_v1_module_proto_goTypes, + DependencyIndexes: file_vault_module_v1_module_proto_depIdxs, + MessageInfos: file_vault_module_v1_module_proto_msgTypes, + }.Build() + File_vault_module_v1_module_proto = out.File + file_vault_module_v1_module_proto_rawDesc = nil + file_vault_module_v1_module_proto_goTypes = nil + file_vault_module_v1_module_proto_depIdxs = nil +} diff --git a/api/vault/v1/genesis.pulsar.go b/api/vault/v1/genesis.pulsar.go new file mode 100644 index 000000000..867b1c3e6 --- /dev/null +++ b/api/vault/v1/genesis.pulsar.go @@ -0,0 +1,2324 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package vaultv1 + +import ( + _ "cosmossdk.io/api/amino" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_genesis_proto_init() + md_GenesisState = File_vault_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.GenesisState.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.GenesisState.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.GenesisState")) + } + panic(fmt.Errorf("message vault.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_ipfs_active protoreflect.FieldDescriptor + fd_Params_local_registration_enabled protoreflect.FieldDescriptor + fd_Params_schema protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_genesis_proto_init() + md_Params = File_vault_v1_genesis_proto.Messages().ByName("Params") + fd_Params_ipfs_active = md_Params.Fields().ByName("ipfs_active") + fd_Params_local_registration_enabled = md_Params.Fields().ByName("local_registration_enabled") + fd_Params_schema = md_Params.Fields().ByName("schema") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_genesis_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.IpfsActive != false { + value := protoreflect.ValueOfBool(x.IpfsActive) + if !f(fd_Params_ipfs_active, value) { + return + } + } + if x.LocalRegistrationEnabled != false { + value := protoreflect.ValueOfBool(x.LocalRegistrationEnabled) + if !f(fd_Params_local_registration_enabled, value) { + return + } + } + if x.Schema != nil { + value := protoreflect.ValueOfMessage(x.Schema.ProtoReflect()) + if !f(fd_Params_schema, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.Params.ipfs_active": + return x.IpfsActive != false + case "vault.v1.Params.local_registration_enabled": + return x.LocalRegistrationEnabled != false + case "vault.v1.Params.schema": + return x.Schema != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.Params.ipfs_active": + x.IpfsActive = false + case "vault.v1.Params.local_registration_enabled": + x.LocalRegistrationEnabled = false + case "vault.v1.Params.schema": + x.Schema = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.Params.ipfs_active": + value := x.IpfsActive + return protoreflect.ValueOfBool(value) + case "vault.v1.Params.local_registration_enabled": + value := x.LocalRegistrationEnabled + return protoreflect.ValueOfBool(value) + case "vault.v1.Params.schema": + value := x.Schema + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.Params.ipfs_active": + x.IpfsActive = value.Bool() + case "vault.v1.Params.local_registration_enabled": + x.LocalRegistrationEnabled = value.Bool() + case "vault.v1.Params.schema": + x.Schema = value.Message().Interface().(*Schema) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.Params.schema": + if x.Schema == nil { + x.Schema = new(Schema) + } + return protoreflect.ValueOfMessage(x.Schema.ProtoReflect()) + case "vault.v1.Params.ipfs_active": + panic(fmt.Errorf("field ipfs_active of message vault.v1.Params is not mutable")) + case "vault.v1.Params.local_registration_enabled": + panic(fmt.Errorf("field local_registration_enabled of message vault.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.Params.ipfs_active": + return protoreflect.ValueOfBool(false) + case "vault.v1.Params.local_registration_enabled": + return protoreflect.ValueOfBool(false) + case "vault.v1.Params.schema": + m := new(Schema) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Params")) + } + panic(fmt.Errorf("message vault.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.IpfsActive { + n += 2 + } + if x.LocalRegistrationEnabled { + n += 2 + } + if x.Schema != nil { + l = options.Size(x.Schema) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Schema != nil { + encoded, err := options.Marshal(x.Schema) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if x.LocalRegistrationEnabled { + i-- + if x.LocalRegistrationEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if x.IpfsActive { + i-- + if x.IpfsActive { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IpfsActive", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.IpfsActive = bool(v != 0) + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LocalRegistrationEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.LocalRegistrationEnabled = bool(v != 0) + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Schema == nil { + x.Schema = &Schema{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Schema); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Schema protoreflect.MessageDescriptor + fd_Schema_version protoreflect.FieldDescriptor + fd_Schema_account protoreflect.FieldDescriptor + fd_Schema_asset protoreflect.FieldDescriptor + fd_Schema_chain protoreflect.FieldDescriptor + fd_Schema_credential protoreflect.FieldDescriptor + fd_Schema_jwk protoreflect.FieldDescriptor + fd_Schema_grant protoreflect.FieldDescriptor + fd_Schema_keyshare protoreflect.FieldDescriptor + fd_Schema_publicKey protoreflect.FieldDescriptor + fd_Schema_profile protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_genesis_proto_init() + md_Schema = File_vault_v1_genesis_proto.Messages().ByName("Schema") + fd_Schema_version = md_Schema.Fields().ByName("version") + fd_Schema_account = md_Schema.Fields().ByName("account") + fd_Schema_asset = md_Schema.Fields().ByName("asset") + fd_Schema_chain = md_Schema.Fields().ByName("chain") + fd_Schema_credential = md_Schema.Fields().ByName("credential") + fd_Schema_jwk = md_Schema.Fields().ByName("jwk") + fd_Schema_grant = md_Schema.Fields().ByName("grant") + fd_Schema_keyshare = md_Schema.Fields().ByName("keyshare") + fd_Schema_publicKey = md_Schema.Fields().ByName("publicKey") + fd_Schema_profile = md_Schema.Fields().ByName("profile") +} + +var _ protoreflect.Message = (*fastReflection_Schema)(nil) + +type fastReflection_Schema Schema + +func (x *Schema) ProtoReflect() protoreflect.Message { + return (*fastReflection_Schema)(x) +} + +func (x *Schema) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_genesis_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Schema_messageType fastReflection_Schema_messageType +var _ protoreflect.MessageType = fastReflection_Schema_messageType{} + +type fastReflection_Schema_messageType struct{} + +func (x fastReflection_Schema_messageType) Zero() protoreflect.Message { + return (*fastReflection_Schema)(nil) +} +func (x fastReflection_Schema_messageType) New() protoreflect.Message { + return new(fastReflection_Schema) +} +func (x fastReflection_Schema_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Schema +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Schema) Descriptor() protoreflect.MessageDescriptor { + return md_Schema +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Schema) Type() protoreflect.MessageType { + return _fastReflection_Schema_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Schema) New() protoreflect.Message { + return new(fastReflection_Schema) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Schema) Interface() protoreflect.ProtoMessage { + return (*Schema)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Schema) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Version != int32(0) { + value := protoreflect.ValueOfInt32(x.Version) + if !f(fd_Schema_version, value) { + return + } + } + if x.Account != "" { + value := protoreflect.ValueOfString(x.Account) + if !f(fd_Schema_account, value) { + return + } + } + if x.Asset != "" { + value := protoreflect.ValueOfString(x.Asset) + if !f(fd_Schema_asset, value) { + return + } + } + if x.Chain != "" { + value := protoreflect.ValueOfString(x.Chain) + if !f(fd_Schema_chain, value) { + return + } + } + if x.Credential != "" { + value := protoreflect.ValueOfString(x.Credential) + if !f(fd_Schema_credential, value) { + return + } + } + if x.Jwk != "" { + value := protoreflect.ValueOfString(x.Jwk) + if !f(fd_Schema_jwk, value) { + return + } + } + if x.Grant != "" { + value := protoreflect.ValueOfString(x.Grant) + if !f(fd_Schema_grant, value) { + return + } + } + if x.Keyshare != "" { + value := protoreflect.ValueOfString(x.Keyshare) + if !f(fd_Schema_keyshare, value) { + return + } + } + if x.PublicKey != "" { + value := protoreflect.ValueOfString(x.PublicKey) + if !f(fd_Schema_publicKey, value) { + return + } + } + if x.Profile != "" { + value := protoreflect.ValueOfString(x.Profile) + if !f(fd_Schema_profile, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Schema) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.Schema.version": + return x.Version != int32(0) + case "vault.v1.Schema.account": + return x.Account != "" + case "vault.v1.Schema.asset": + return x.Asset != "" + case "vault.v1.Schema.chain": + return x.Chain != "" + case "vault.v1.Schema.credential": + return x.Credential != "" + case "vault.v1.Schema.jwk": + return x.Jwk != "" + case "vault.v1.Schema.grant": + return x.Grant != "" + case "vault.v1.Schema.keyshare": + return x.Keyshare != "" + case "vault.v1.Schema.publicKey": + return x.PublicKey != "" + case "vault.v1.Schema.profile": + return x.Profile != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Schema) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.Schema.version": + x.Version = int32(0) + case "vault.v1.Schema.account": + x.Account = "" + case "vault.v1.Schema.asset": + x.Asset = "" + case "vault.v1.Schema.chain": + x.Chain = "" + case "vault.v1.Schema.credential": + x.Credential = "" + case "vault.v1.Schema.jwk": + x.Jwk = "" + case "vault.v1.Schema.grant": + x.Grant = "" + case "vault.v1.Schema.keyshare": + x.Keyshare = "" + case "vault.v1.Schema.publicKey": + x.PublicKey = "" + case "vault.v1.Schema.profile": + x.Profile = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Schema) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.Schema.version": + value := x.Version + return protoreflect.ValueOfInt32(value) + case "vault.v1.Schema.account": + value := x.Account + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.asset": + value := x.Asset + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.chain": + value := x.Chain + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.credential": + value := x.Credential + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.jwk": + value := x.Jwk + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.grant": + value := x.Grant + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.keyshare": + value := x.Keyshare + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.publicKey": + value := x.PublicKey + return protoreflect.ValueOfString(value) + case "vault.v1.Schema.profile": + value := x.Profile + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Schema) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.Schema.version": + x.Version = int32(value.Int()) + case "vault.v1.Schema.account": + x.Account = value.Interface().(string) + case "vault.v1.Schema.asset": + x.Asset = value.Interface().(string) + case "vault.v1.Schema.chain": + x.Chain = value.Interface().(string) + case "vault.v1.Schema.credential": + x.Credential = value.Interface().(string) + case "vault.v1.Schema.jwk": + x.Jwk = value.Interface().(string) + case "vault.v1.Schema.grant": + x.Grant = value.Interface().(string) + case "vault.v1.Schema.keyshare": + x.Keyshare = value.Interface().(string) + case "vault.v1.Schema.publicKey": + x.PublicKey = value.Interface().(string) + case "vault.v1.Schema.profile": + x.Profile = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Schema) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.Schema.version": + panic(fmt.Errorf("field version of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.account": + panic(fmt.Errorf("field account of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.asset": + panic(fmt.Errorf("field asset of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.chain": + panic(fmt.Errorf("field chain of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.credential": + panic(fmt.Errorf("field credential of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.jwk": + panic(fmt.Errorf("field jwk of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.grant": + panic(fmt.Errorf("field grant of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.keyshare": + panic(fmt.Errorf("field keyshare of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.publicKey": + panic(fmt.Errorf("field publicKey of message vault.v1.Schema is not mutable")) + case "vault.v1.Schema.profile": + panic(fmt.Errorf("field profile of message vault.v1.Schema is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Schema) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.Schema.version": + return protoreflect.ValueOfInt32(int32(0)) + case "vault.v1.Schema.account": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.asset": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.chain": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.credential": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.jwk": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.grant": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.keyshare": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.publicKey": + return protoreflect.ValueOfString("") + case "vault.v1.Schema.profile": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.Schema")) + } + panic(fmt.Errorf("message vault.v1.Schema does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Schema) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.Schema", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Schema) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Schema) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Schema) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Schema) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Schema) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Version != 0 { + n += 1 + runtime.Sov(uint64(x.Version)) + } + l = len(x.Account) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Asset) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Chain) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Credential) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Jwk) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Grant) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Keyshare) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.PublicKey) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Profile) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Schema) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Profile) > 0 { + i -= len(x.Profile) + copy(dAtA[i:], x.Profile) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Profile))) + i-- + dAtA[i] = 0x52 + } + if len(x.PublicKey) > 0 { + i -= len(x.PublicKey) + copy(dAtA[i:], x.PublicKey) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.PublicKey))) + i-- + dAtA[i] = 0x4a + } + if len(x.Keyshare) > 0 { + i -= len(x.Keyshare) + copy(dAtA[i:], x.Keyshare) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Keyshare))) + i-- + dAtA[i] = 0x42 + } + if len(x.Grant) > 0 { + i -= len(x.Grant) + copy(dAtA[i:], x.Grant) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Grant))) + i-- + dAtA[i] = 0x3a + } + if len(x.Jwk) > 0 { + i -= len(x.Jwk) + copy(dAtA[i:], x.Jwk) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Jwk))) + i-- + dAtA[i] = 0x32 + } + if len(x.Credential) > 0 { + i -= len(x.Credential) + copy(dAtA[i:], x.Credential) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Credential))) + i-- + dAtA[i] = 0x2a + } + if len(x.Chain) > 0 { + i -= len(x.Chain) + copy(dAtA[i:], x.Chain) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Chain))) + i-- + dAtA[i] = 0x22 + } + if len(x.Asset) > 0 { + i -= len(x.Asset) + copy(dAtA[i:], x.Asset) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Asset))) + i-- + dAtA[i] = 0x1a + } + if len(x.Account) > 0 { + i -= len(x.Account) + copy(dAtA[i:], x.Account) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Account))) + i-- + dAtA[i] = 0x12 + } + if x.Version != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Version)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Schema) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Schema: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Schema: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + x.Version = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Version |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Account = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Asset", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Asset = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Chain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Credential", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Credential = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Jwk", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Jwk = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Grant", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Grant = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Keyshare", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Keyshare = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.PublicKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Profile", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Profile = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: vault/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the module genesis state +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Params defines all the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_vault_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// Params defines the set of module parameters. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IpfsActive bool `protobuf:"varint,1,opt,name=ipfs_active,json=ipfsActive,proto3" json:"ipfs_active,omitempty"` + LocalRegistrationEnabled bool `protobuf:"varint,2,opt,name=local_registration_enabled,json=localRegistrationEnabled,proto3" json:"local_registration_enabled,omitempty"` + Schema *Schema `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_vault_v1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *Params) GetIpfsActive() bool { + if x != nil { + return x.IpfsActive + } + return false +} + +func (x *Params) GetLocalRegistrationEnabled() bool { + if x != nil { + return x.LocalRegistrationEnabled + } + return false +} + +func (x *Params) GetSchema() *Schema { + if x != nil { + return x.Schema + } + return nil +} + +type Schema struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"` + Asset string `protobuf:"bytes,3,opt,name=asset,proto3" json:"asset,omitempty"` + Chain string `protobuf:"bytes,4,opt,name=chain,proto3" json:"chain,omitempty"` + Credential string `protobuf:"bytes,5,opt,name=credential,proto3" json:"credential,omitempty"` + Jwk string `protobuf:"bytes,6,opt,name=jwk,proto3" json:"jwk,omitempty"` + Grant string `protobuf:"bytes,7,opt,name=grant,proto3" json:"grant,omitempty"` + Keyshare string `protobuf:"bytes,8,opt,name=keyshare,proto3" json:"keyshare,omitempty"` + PublicKey string `protobuf:"bytes,9,opt,name=publicKey,proto3" json:"publicKey,omitempty"` + Profile string `protobuf:"bytes,10,opt,name=profile,proto3" json:"profile,omitempty"` +} + +func (x *Schema) Reset() { + *x = Schema{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_genesis_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Schema) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Schema) ProtoMessage() {} + +// Deprecated: Use Schema.ProtoReflect.Descriptor instead. +func (*Schema) Descriptor() ([]byte, []int) { + return file_vault_v1_genesis_proto_rawDescGZIP(), []int{2} +} + +func (x *Schema) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *Schema) GetAccount() string { + if x != nil { + return x.Account + } + return "" +} + +func (x *Schema) GetAsset() string { + if x != nil { + return x.Asset + } + return "" +} + +func (x *Schema) GetChain() string { + if x != nil { + return x.Chain + } + return "" +} + +func (x *Schema) GetCredential() string { + if x != nil { + return x.Credential + } + return "" +} + +func (x *Schema) GetJwk() string { + if x != nil { + return x.Jwk + } + return "" +} + +func (x *Schema) GetGrant() string { + if x != nil { + return x.Grant + } + return "" +} + +func (x *Schema) GetKeyshare() string { + if x != nil { + return x.Keyshare + } + return "" +} + +func (x *Schema) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *Schema) GetProfile() string { + if x != nil { + return x.Profile + } + return "" +} + +var File_vault_v1_genesis_proto protoreflect.FileDescriptor + +var file_vault_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, + 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, + 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x0c, 0x47, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, + 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x70, 0x66, 0x73, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x70, 0x66, + 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3a, + 0x19, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x0c, 0x76, 0x61, + 0x75, 0x6c, 0x74, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x84, 0x02, 0x0a, 0x06, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x77, 0x6b, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6a, 0x77, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x42, 0x8a, 0x01, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, + 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x56, 0x61, + 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x09, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_vault_v1_genesis_proto_rawDescOnce sync.Once + file_vault_v1_genesis_proto_rawDescData = file_vault_v1_genesis_proto_rawDesc +) + +func file_vault_v1_genesis_proto_rawDescGZIP() []byte { + file_vault_v1_genesis_proto_rawDescOnce.Do(func() { + file_vault_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_vault_v1_genesis_proto_rawDescData) + }) + return file_vault_v1_genesis_proto_rawDescData +} + +var file_vault_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_vault_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: vault.v1.GenesisState + (*Params)(nil), // 1: vault.v1.Params + (*Schema)(nil), // 2: vault.v1.Schema +} +var file_vault_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: vault.v1.GenesisState.params:type_name -> vault.v1.Params + 2, // 1: vault.v1.Params.schema:type_name -> vault.v1.Schema + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_vault_v1_genesis_proto_init() } +func file_vault_v1_genesis_proto_init() { + if File_vault_v1_genesis_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_vault_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_genesis_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Schema); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vault_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_vault_v1_genesis_proto_goTypes, + DependencyIndexes: file_vault_v1_genesis_proto_depIdxs, + MessageInfos: file_vault_v1_genesis_proto_msgTypes, + }.Build() + File_vault_v1_genesis_proto = out.File + file_vault_v1_genesis_proto_rawDesc = nil + file_vault_v1_genesis_proto_goTypes = nil + file_vault_v1_genesis_proto_depIdxs = nil +} diff --git a/api/vault/v1/query.pulsar.go b/api/vault/v1/query.pulsar.go new file mode 100644 index 000000000..7cd917edb --- /dev/null +++ b/api/vault/v1/query.pulsar.go @@ -0,0 +1,3881 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package vaultv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_QueryParamsRequest = File_vault_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_QueryParamsResponse = File_vault_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryIPFSRequest protoreflect.MessageDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_QueryIPFSRequest = File_vault_v1_query_proto.Messages().ByName("QueryIPFSRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryIPFSRequest)(nil) + +type fastReflection_QueryIPFSRequest QueryIPFSRequest + +func (x *QueryIPFSRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryIPFSRequest)(x) +} + +func (x *QueryIPFSRequest) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryIPFSRequest_messageType fastReflection_QueryIPFSRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryIPFSRequest_messageType{} + +type fastReflection_QueryIPFSRequest_messageType struct{} + +func (x fastReflection_QueryIPFSRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryIPFSRequest)(nil) +} +func (x fastReflection_QueryIPFSRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryIPFSRequest) +} +func (x fastReflection_QueryIPFSRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryIPFSRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryIPFSRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryIPFSRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryIPFSRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryIPFSRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryIPFSRequest) New() protoreflect.Message { + return new(fastReflection_QueryIPFSRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryIPFSRequest) Interface() protoreflect.ProtoMessage { + return (*QueryIPFSRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryIPFSRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryIPFSRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryIPFSRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryIPFSRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSRequest")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryIPFSRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.QueryIPFSRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryIPFSRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryIPFSRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryIPFSRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryIPFSRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryIPFSRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryIPFSRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIPFSRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIPFSRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryIPFSResponse protoreflect.MessageDescriptor + fd_QueryIPFSResponse_ipfs protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_QueryIPFSResponse = File_vault_v1_query_proto.Messages().ByName("QueryIPFSResponse") + fd_QueryIPFSResponse_ipfs = md_QueryIPFSResponse.Fields().ByName("ipfs") +} + +var _ protoreflect.Message = (*fastReflection_QueryIPFSResponse)(nil) + +type fastReflection_QueryIPFSResponse QueryIPFSResponse + +func (x *QueryIPFSResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryIPFSResponse)(x) +} + +func (x *QueryIPFSResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryIPFSResponse_messageType fastReflection_QueryIPFSResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryIPFSResponse_messageType{} + +type fastReflection_QueryIPFSResponse_messageType struct{} + +func (x fastReflection_QueryIPFSResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryIPFSResponse)(nil) +} +func (x fastReflection_QueryIPFSResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryIPFSResponse) +} +func (x fastReflection_QueryIPFSResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryIPFSResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryIPFSResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryIPFSResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryIPFSResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryIPFSResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryIPFSResponse) New() protoreflect.Message { + return new(fastReflection_QueryIPFSResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryIPFSResponse) Interface() protoreflect.ProtoMessage { + return (*QueryIPFSResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryIPFSResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Ipfs != false { + value := protoreflect.ValueOfBool(x.Ipfs) + if !f(fd_QueryIPFSResponse_ipfs, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryIPFSResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + return x.Ipfs != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + x.Ipfs = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryIPFSResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + value := x.Ipfs + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + x.Ipfs = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + panic(fmt.Errorf("field ipfs of message vault.v1.QueryIPFSResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryIPFSResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.QueryIPFSResponse.ipfs": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.QueryIPFSResponse")) + } + panic(fmt.Errorf("message vault.v1.QueryIPFSResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryIPFSResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.QueryIPFSResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryIPFSResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryIPFSResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryIPFSResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryIPFSResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryIPFSResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Ipfs { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryIPFSResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Ipfs { + i-- + if x.Ipfs { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryIPFSResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIPFSResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryIPFSResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Ipfs", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Ipfs = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_SyncRequest protoreflect.MessageDescriptor + fd_SyncRequest_did protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_SyncRequest = File_vault_v1_query_proto.Messages().ByName("SyncRequest") + fd_SyncRequest_did = md_SyncRequest.Fields().ByName("did") +} + +var _ protoreflect.Message = (*fastReflection_SyncRequest)(nil) + +type fastReflection_SyncRequest SyncRequest + +func (x *SyncRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_SyncRequest)(x) +} + +func (x *SyncRequest) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_SyncRequest_messageType fastReflection_SyncRequest_messageType +var _ protoreflect.MessageType = fastReflection_SyncRequest_messageType{} + +type fastReflection_SyncRequest_messageType struct{} + +func (x fastReflection_SyncRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_SyncRequest)(nil) +} +func (x fastReflection_SyncRequest_messageType) New() protoreflect.Message { + return new(fastReflection_SyncRequest) +} +func (x fastReflection_SyncRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_SyncRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_SyncRequest) Descriptor() protoreflect.MessageDescriptor { + return md_SyncRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_SyncRequest) Type() protoreflect.MessageType { + return _fastReflection_SyncRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_SyncRequest) New() protoreflect.Message { + return new(fastReflection_SyncRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_SyncRequest) Interface() protoreflect.ProtoMessage { + return (*SyncRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_SyncRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_SyncRequest_did, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_SyncRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.SyncRequest.did": + return x.Did != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.SyncRequest.did": + x.Did = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_SyncRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.SyncRequest.did": + value := x.Did + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.SyncRequest.did": + x.Did = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.SyncRequest.did": + panic(fmt.Errorf("field did of message vault.v1.SyncRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_SyncRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.SyncRequest.did": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncRequest")) + } + panic(fmt.Errorf("message vault.v1.SyncRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_SyncRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.SyncRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_SyncRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_SyncRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_SyncRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*SyncRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Did) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*SyncRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*SyncRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_SyncResponse protoreflect.MessageDescriptor + fd_SyncResponse_success protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_SyncResponse = File_vault_v1_query_proto.Messages().ByName("SyncResponse") + fd_SyncResponse_success = md_SyncResponse.Fields().ByName("success") +} + +var _ protoreflect.Message = (*fastReflection_SyncResponse)(nil) + +type fastReflection_SyncResponse SyncResponse + +func (x *SyncResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_SyncResponse)(x) +} + +func (x *SyncResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_SyncResponse_messageType fastReflection_SyncResponse_messageType +var _ protoreflect.MessageType = fastReflection_SyncResponse_messageType{} + +type fastReflection_SyncResponse_messageType struct{} + +func (x fastReflection_SyncResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_SyncResponse)(nil) +} +func (x fastReflection_SyncResponse_messageType) New() protoreflect.Message { + return new(fastReflection_SyncResponse) +} +func (x fastReflection_SyncResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_SyncResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_SyncResponse) Descriptor() protoreflect.MessageDescriptor { + return md_SyncResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_SyncResponse) Type() protoreflect.MessageType { + return _fastReflection_SyncResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_SyncResponse) New() protoreflect.Message { + return new(fastReflection_SyncResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_SyncResponse) Interface() protoreflect.ProtoMessage { + return (*SyncResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_SyncResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_SyncResponse_success, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_SyncResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.SyncResponse.success": + return x.Success != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.SyncResponse.success": + x.Success = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_SyncResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.SyncResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.SyncResponse.success": + x.Success = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.SyncResponse.success": + panic(fmt.Errorf("field success of message vault.v1.SyncResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_SyncResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.SyncResponse.success": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.SyncResponse")) + } + panic(fmt.Errorf("message vault.v1.SyncResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_SyncResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.SyncResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_SyncResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_SyncResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_SyncResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_SyncResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*SyncResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Success { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*SyncResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*SyncResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: SyncResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_BuildTxRequest protoreflect.MessageDescriptor + fd_BuildTxRequest_did protoreflect.FieldDescriptor + fd_BuildTxRequest_pkl protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_BuildTxRequest = File_vault_v1_query_proto.Messages().ByName("BuildTxRequest") + fd_BuildTxRequest_did = md_BuildTxRequest.Fields().ByName("did") + fd_BuildTxRequest_pkl = md_BuildTxRequest.Fields().ByName("pkl") +} + +var _ protoreflect.Message = (*fastReflection_BuildTxRequest)(nil) + +type fastReflection_BuildTxRequest BuildTxRequest + +func (x *BuildTxRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_BuildTxRequest)(x) +} + +func (x *BuildTxRequest) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_BuildTxRequest_messageType fastReflection_BuildTxRequest_messageType +var _ protoreflect.MessageType = fastReflection_BuildTxRequest_messageType{} + +type fastReflection_BuildTxRequest_messageType struct{} + +func (x fastReflection_BuildTxRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_BuildTxRequest)(nil) +} +func (x fastReflection_BuildTxRequest_messageType) New() protoreflect.Message { + return new(fastReflection_BuildTxRequest) +} +func (x fastReflection_BuildTxRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_BuildTxRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_BuildTxRequest) Descriptor() protoreflect.MessageDescriptor { + return md_BuildTxRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_BuildTxRequest) Type() protoreflect.MessageType { + return _fastReflection_BuildTxRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_BuildTxRequest) New() protoreflect.Message { + return new(fastReflection_BuildTxRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_BuildTxRequest) Interface() protoreflect.ProtoMessage { + return (*BuildTxRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_BuildTxRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Did != "" { + value := protoreflect.ValueOfString(x.Did) + if !f(fd_BuildTxRequest_did, value) { + return + } + } + if x.Pkl != "" { + value := protoreflect.ValueOfString(x.Pkl) + if !f(fd_BuildTxRequest_pkl, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_BuildTxRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.BuildTxRequest.did": + return x.Did != "" + case "vault.v1.BuildTxRequest.pkl": + return x.Pkl != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.BuildTxRequest.did": + x.Did = "" + case "vault.v1.BuildTxRequest.pkl": + x.Pkl = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_BuildTxRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.BuildTxRequest.did": + value := x.Did + return protoreflect.ValueOfString(value) + case "vault.v1.BuildTxRequest.pkl": + value := x.Pkl + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.BuildTxRequest.did": + x.Did = value.Interface().(string) + case "vault.v1.BuildTxRequest.pkl": + x.Pkl = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.BuildTxRequest.did": + panic(fmt.Errorf("field did of message vault.v1.BuildTxRequest is not mutable")) + case "vault.v1.BuildTxRequest.pkl": + panic(fmt.Errorf("field pkl of message vault.v1.BuildTxRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_BuildTxRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.BuildTxRequest.did": + return protoreflect.ValueOfString("") + case "vault.v1.BuildTxRequest.pkl": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxRequest")) + } + panic(fmt.Errorf("message vault.v1.BuildTxRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_BuildTxRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.BuildTxRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_BuildTxRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_BuildTxRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_BuildTxRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*BuildTxRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Did) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Pkl) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*BuildTxRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Pkl) > 0 { + i -= len(x.Pkl) + copy(dAtA[i:], x.Pkl) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Pkl))) + i-- + dAtA[i] = 0x12 + } + if len(x.Did) > 0 { + i -= len(x.Did) + copy(dAtA[i:], x.Did) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*BuildTxRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BuildTxRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BuildTxRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pkl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Pkl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_BuildTxResponse protoreflect.MessageDescriptor + fd_BuildTxResponse_success protoreflect.FieldDescriptor + fd_BuildTxResponse_tx protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_query_proto_init() + md_BuildTxResponse = File_vault_v1_query_proto.Messages().ByName("BuildTxResponse") + fd_BuildTxResponse_success = md_BuildTxResponse.Fields().ByName("success") + fd_BuildTxResponse_tx = md_BuildTxResponse.Fields().ByName("tx") +} + +var _ protoreflect.Message = (*fastReflection_BuildTxResponse)(nil) + +type fastReflection_BuildTxResponse BuildTxResponse + +func (x *BuildTxResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_BuildTxResponse)(x) +} + +func (x *BuildTxResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_query_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_BuildTxResponse_messageType fastReflection_BuildTxResponse_messageType +var _ protoreflect.MessageType = fastReflection_BuildTxResponse_messageType{} + +type fastReflection_BuildTxResponse_messageType struct{} + +func (x fastReflection_BuildTxResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_BuildTxResponse)(nil) +} +func (x fastReflection_BuildTxResponse_messageType) New() protoreflect.Message { + return new(fastReflection_BuildTxResponse) +} +func (x fastReflection_BuildTxResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_BuildTxResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_BuildTxResponse) Descriptor() protoreflect.MessageDescriptor { + return md_BuildTxResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_BuildTxResponse) Type() protoreflect.MessageType { + return _fastReflection_BuildTxResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_BuildTxResponse) New() protoreflect.Message { + return new(fastReflection_BuildTxResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_BuildTxResponse) Interface() protoreflect.ProtoMessage { + return (*BuildTxResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_BuildTxResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Success != false { + value := protoreflect.ValueOfBool(x.Success) + if !f(fd_BuildTxResponse_success, value) { + return + } + } + if x.Tx != "" { + value := protoreflect.ValueOfString(x.Tx) + if !f(fd_BuildTxResponse_tx, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_BuildTxResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.BuildTxResponse.success": + return x.Success != false + case "vault.v1.BuildTxResponse.tx": + return x.Tx != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.BuildTxResponse.success": + x.Success = false + case "vault.v1.BuildTxResponse.tx": + x.Tx = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_BuildTxResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.BuildTxResponse.success": + value := x.Success + return protoreflect.ValueOfBool(value) + case "vault.v1.BuildTxResponse.tx": + value := x.Tx + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.BuildTxResponse.success": + x.Success = value.Bool() + case "vault.v1.BuildTxResponse.tx": + x.Tx = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.BuildTxResponse.success": + panic(fmt.Errorf("field success of message vault.v1.BuildTxResponse is not mutable")) + case "vault.v1.BuildTxResponse.tx": + panic(fmt.Errorf("field tx of message vault.v1.BuildTxResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_BuildTxResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.BuildTxResponse.success": + return protoreflect.ValueOfBool(false) + case "vault.v1.BuildTxResponse.tx": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.BuildTxResponse")) + } + panic(fmt.Errorf("message vault.v1.BuildTxResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_BuildTxResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.BuildTxResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_BuildTxResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_BuildTxResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_BuildTxResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_BuildTxResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*BuildTxResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Success { + n += 2 + } + l = len(x.Tx) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*BuildTxResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Tx) > 0 { + i -= len(x.Tx) + copy(dAtA[i:], x.Tx) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Tx))) + i-- + dAtA[i] = 0x12 + } + if x.Success { + i-- + if x.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*BuildTxResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BuildTxResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: BuildTxResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Success = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Tx = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: vault/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// QueryIPFSRequest is the request type for the Query/IPFS RPC method. +type QueryIPFSRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryIPFSRequest) Reset() { + *x = QueryIPFSRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryIPFSRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryIPFSRequest) ProtoMessage() {} + +// Deprecated: Use QueryIPFSRequest.ProtoReflect.Descriptor instead. +func (*QueryIPFSRequest) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{2} +} + +// QueryIPFSResponse is the response type for the Query/IPFS RPC method. +type QueryIPFSResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // IPFS is the IPFS client status. + Ipfs bool `protobuf:"varint,1,opt,name=ipfs,proto3" json:"ipfs,omitempty"` +} + +func (x *QueryIPFSResponse) Reset() { + *x = QueryIPFSResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryIPFSResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryIPFSResponse) ProtoMessage() {} + +// Deprecated: Use QueryIPFSResponse.ProtoReflect.Descriptor instead. +func (*QueryIPFSResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryIPFSResponse) GetIpfs() bool { + if x != nil { + return x.Ipfs + } + return false +} + +// SyncRequest is the request type for the Sync RPC method. +type SyncRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` +} + +func (x *SyncRequest) Reset() { + *x = SyncRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncRequest) ProtoMessage() {} + +// Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead. +func (*SyncRequest) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *SyncRequest) GetDid() string { + if x != nil { + return x.Did + } + return "" +} + +// SyncResponse is the response type for the Sync RPC method. +type SyncResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` +} + +func (x *SyncResponse) Reset() { + *x = SyncResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncResponse) ProtoMessage() {} + +// Deprecated: Use SyncResponse.ProtoReflect.Descriptor instead. +func (*SyncResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *SyncResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +// BuildTxRequest is the request type for the BuildTx RPC method. +type BuildTxRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Pkl string `protobuf:"bytes,2,opt,name=pkl,proto3" json:"pkl,omitempty"` +} + +func (x *BuildTxRequest) Reset() { + *x = BuildTxRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BuildTxRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildTxRequest) ProtoMessage() {} + +// Deprecated: Use BuildTxRequest.ProtoReflect.Descriptor instead. +func (*BuildTxRequest) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *BuildTxRequest) GetDid() string { + if x != nil { + return x.Did + } + return "" +} + +func (x *BuildTxRequest) GetPkl() string { + if x != nil { + return x.Pkl + } + return "" +} + +// BuildTxResponse is the response type for the BuildTx RPC method. +type BuildTxResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Tx string `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"` +} + +func (x *BuildTxResponse) Reset() { + *x = BuildTxResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BuildTxResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BuildTxResponse) ProtoMessage() {} + +// Deprecated: Use BuildTxResponse.ProtoReflect.Descriptor instead. +func (*BuildTxResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *BuildTxResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *BuildTxResponse) GetTx() string { + if x != nil { + return x.Tx + } + return "" +} + +var File_vault_v1_query_proto protoreflect.FileDescriptor + +var file_vault_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, + 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3f, 0x0a, 0x13, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x12, 0x0a, + 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x46, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x27, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x50, 0x46, 0x53, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x70, 0x66, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x70, 0x66, 0x73, 0x22, 0x1f, 0x0a, 0x0b, 0x53, 0x79, + 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x0c, 0x53, + 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x34, 0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x78, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6b, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x6b, 0x6c, 0x22, 0x3b, 0x0a, 0x0f, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x78, 0x32, 0x92, 0x02, 0x0a, 0x05, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x5f, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x2e, 0x76, + 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x61, 0x75, + 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x12, 0x12, 0x10, 0x2f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x78, 0x12, 0x18, + 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x11, 0x2f, 0x76, 0x61, + 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x74, 0x78, 0x12, 0x4d, + 0x0a, 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x15, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0e, 0x2f, + 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x88, 0x01, + 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0a, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, + 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, + 0x31, 0x3b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, + 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x56, + 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_vault_v1_query_proto_rawDescOnce sync.Once + file_vault_v1_query_proto_rawDescData = file_vault_v1_query_proto_rawDesc +) + +func file_vault_v1_query_proto_rawDescGZIP() []byte { + file_vault_v1_query_proto_rawDescOnce.Do(func() { + file_vault_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_vault_v1_query_proto_rawDescData) + }) + return file_vault_v1_query_proto_rawDescData +} + +var file_vault_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_vault_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: vault.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: vault.v1.QueryParamsResponse + (*QueryIPFSRequest)(nil), // 2: vault.v1.QueryIPFSRequest + (*QueryIPFSResponse)(nil), // 3: vault.v1.QueryIPFSResponse + (*SyncRequest)(nil), // 4: vault.v1.SyncRequest + (*SyncResponse)(nil), // 5: vault.v1.SyncResponse + (*BuildTxRequest)(nil), // 6: vault.v1.BuildTxRequest + (*BuildTxResponse)(nil), // 7: vault.v1.BuildTxResponse + (*Params)(nil), // 8: vault.v1.Params +} +var file_vault_v1_query_proto_depIdxs = []int32{ + 8, // 0: vault.v1.QueryParamsResponse.params:type_name -> vault.v1.Params + 0, // 1: vault.v1.Query.Params:input_type -> vault.v1.QueryParamsRequest + 6, // 2: vault.v1.Query.BuildTx:input_type -> vault.v1.BuildTxRequest + 4, // 3: vault.v1.Query.Sync:input_type -> vault.v1.SyncRequest + 1, // 4: vault.v1.Query.Params:output_type -> vault.v1.QueryParamsResponse + 7, // 5: vault.v1.Query.BuildTx:output_type -> vault.v1.BuildTxResponse + 5, // 6: vault.v1.Query.Sync:output_type -> vault.v1.SyncResponse + 4, // [4:7] is the sub-list for method output_type + 1, // [1:4] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_vault_v1_query_proto_init() } +func file_vault_v1_query_proto_init() { + if File_vault_v1_query_proto != nil { + return + } + file_vault_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_vault_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryIPFSRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryIPFSResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SyncResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BuildTxRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BuildTxResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vault_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_vault_v1_query_proto_goTypes, + DependencyIndexes: file_vault_v1_query_proto_depIdxs, + MessageInfos: file_vault_v1_query_proto_msgTypes, + }.Build() + File_vault_v1_query_proto = out.File + file_vault_v1_query_proto_rawDesc = nil + file_vault_v1_query_proto_goTypes = nil + file_vault_v1_query_proto_depIdxs = nil +} diff --git a/api/vault/v1/query_grpc.pb.go b/api/vault/v1/query_grpc.pb.go new file mode 100644 index 000000000..8b371f4f5 --- /dev/null +++ b/api/vault/v1/query_grpc.pb.go @@ -0,0 +1,191 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: vault/v1/query.proto + +package vaultv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/vault.v1.Query/Params" + Query_BuildTx_FullMethodName = "/vault.v1.Query/BuildTx" + Query_Sync_FullMethodName = "/vault.v1.Query/Sync" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Params queries all parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // BuildTx builds an unsigned transaction message for the given PKL. + BuildTx(ctx context.Context, in *BuildTxRequest, opts ...grpc.CallOption) (*BuildTxResponse, error) + // Sync queries the DID document by its id. And returns the required PKL + // information + Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) BuildTx(ctx context.Context, in *BuildTxRequest, opts ...grpc.CallOption) (*BuildTxResponse, error) { + out := new(BuildTxResponse) + err := c.cc.Invoke(ctx, Query_BuildTx_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) { + out := new(SyncResponse) + err := c.cc.Invoke(ctx, Query_Sync_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Params queries all parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // BuildTx builds an unsigned transaction message for the given PKL. + BuildTx(context.Context, *BuildTxRequest) (*BuildTxResponse, error) + // Sync queries the DID document by its id. And returns the required PKL + // information + Sync(context.Context, *SyncRequest) (*SyncResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) BuildTx(context.Context, *BuildTxRequest) (*BuildTxResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BuildTx not implemented") +} +func (UnimplementedQueryServer) Sync(context.Context, *SyncRequest) (*SyncResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Sync not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_BuildTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BuildTxRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).BuildTx(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_BuildTx_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).BuildTx(ctx, req.(*BuildTxRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Sync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SyncRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Sync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Sync_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Sync(ctx, req.(*SyncRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "vault.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "BuildTx", + Handler: _Query_BuildTx_Handler, + }, + { + MethodName: "Sync", + Handler: _Query_Sync_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "vault/v1/query.proto", +} diff --git a/api/vault/v1/state.cosmos_orm.go b/api/vault/v1/state.cosmos_orm.go new file mode 100644 index 000000000..0e6141446 --- /dev/null +++ b/api/vault/v1/state.cosmos_orm.go @@ -0,0 +1,166 @@ +// Code generated by protoc-gen-go-cosmos-orm. DO NOT EDIT. + +package vaultv1 + +import ( + context "context" + ormlist "cosmossdk.io/orm/model/ormlist" + ormtable "cosmossdk.io/orm/model/ormtable" + ormerrors "cosmossdk.io/orm/types/ormerrors" +) + +type DWNTable interface { + Insert(ctx context.Context, dWN *DWN) error + Update(ctx context.Context, dWN *DWN) error + Save(ctx context.Context, dWN *DWN) error + Delete(ctx context.Context, dWN *DWN) error + Has(ctx context.Context, account []byte) (found bool, err error) + // Get returns nil and an error which responds true to ormerrors.IsNotFound() if the record was not found. + Get(ctx context.Context, account []byte) (*DWN, error) + List(ctx context.Context, prefixKey DWNIndexKey, opts ...ormlist.Option) (DWNIterator, error) + ListRange(ctx context.Context, from, to DWNIndexKey, opts ...ormlist.Option) (DWNIterator, error) + DeleteBy(ctx context.Context, prefixKey DWNIndexKey) error + DeleteRange(ctx context.Context, from, to DWNIndexKey) error + + doNotImplement() +} + +type DWNIterator struct { + ormtable.Iterator +} + +func (i DWNIterator) Value() (*DWN, error) { + var dWN DWN + err := i.UnmarshalMessage(&dWN) + return &dWN, err +} + +type DWNIndexKey interface { + id() uint32 + values() []interface{} + dWNIndexKey() +} + +// primary key starting index.. +type DWNPrimaryKey = DWNAccountIndexKey + +type DWNAccountIndexKey struct { + vs []interface{} +} + +func (x DWNAccountIndexKey) id() uint32 { return 0 } +func (x DWNAccountIndexKey) values() []interface{} { return x.vs } +func (x DWNAccountIndexKey) dWNIndexKey() {} + +func (this DWNAccountIndexKey) WithAccount(account []byte) DWNAccountIndexKey { + this.vs = []interface{}{account} + return this +} + +type DWNAmountIndexKey struct { + vs []interface{} +} + +func (x DWNAmountIndexKey) id() uint32 { return 1 } +func (x DWNAmountIndexKey) values() []interface{} { return x.vs } +func (x DWNAmountIndexKey) dWNIndexKey() {} + +func (this DWNAmountIndexKey) WithAmount(amount uint64) DWNAmountIndexKey { + this.vs = []interface{}{amount} + return this +} + +type dWNTable struct { + table ormtable.Table +} + +func (this dWNTable) Insert(ctx context.Context, dWN *DWN) error { + return this.table.Insert(ctx, dWN) +} + +func (this dWNTable) Update(ctx context.Context, dWN *DWN) error { + return this.table.Update(ctx, dWN) +} + +func (this dWNTable) Save(ctx context.Context, dWN *DWN) error { + return this.table.Save(ctx, dWN) +} + +func (this dWNTable) Delete(ctx context.Context, dWN *DWN) error { + return this.table.Delete(ctx, dWN) +} + +func (this dWNTable) Has(ctx context.Context, account []byte) (found bool, err error) { + return this.table.PrimaryKey().Has(ctx, account) +} + +func (this dWNTable) Get(ctx context.Context, account []byte) (*DWN, error) { + var dWN DWN + found, err := this.table.PrimaryKey().Get(ctx, &dWN, account) + if err != nil { + return nil, err + } + if !found { + return nil, ormerrors.NotFound + } + return &dWN, nil +} + +func (this dWNTable) List(ctx context.Context, prefixKey DWNIndexKey, opts ...ormlist.Option) (DWNIterator, error) { + it, err := this.table.GetIndexByID(prefixKey.id()).List(ctx, prefixKey.values(), opts...) + return DWNIterator{it}, err +} + +func (this dWNTable) ListRange(ctx context.Context, from, to DWNIndexKey, opts ...ormlist.Option) (DWNIterator, error) { + it, err := this.table.GetIndexByID(from.id()).ListRange(ctx, from.values(), to.values(), opts...) + return DWNIterator{it}, err +} + +func (this dWNTable) DeleteBy(ctx context.Context, prefixKey DWNIndexKey) error { + return this.table.GetIndexByID(prefixKey.id()).DeleteBy(ctx, prefixKey.values()...) +} + +func (this dWNTable) DeleteRange(ctx context.Context, from, to DWNIndexKey) error { + return this.table.GetIndexByID(from.id()).DeleteRange(ctx, from.values(), to.values()) +} + +func (this dWNTable) doNotImplement() {} + +var _ DWNTable = dWNTable{} + +func NewDWNTable(db ormtable.Schema) (DWNTable, error) { + table := db.GetTable(&DWN{}) + if table == nil { + return nil, ormerrors.TableNotFound.Wrap(string((&DWN{}).ProtoReflect().Descriptor().FullName())) + } + return dWNTable{table}, nil +} + +type StateStore interface { + DWNTable() DWNTable + + doNotImplement() +} + +type stateStore struct { + dWN DWNTable +} + +func (x stateStore) DWNTable() DWNTable { + return x.dWN +} + +func (stateStore) doNotImplement() {} + +var _ StateStore = stateStore{} + +func NewStateStore(db ormtable.Schema) (StateStore, error) { + dWNTable, err := NewDWNTable(db) + if err != nil { + return nil, err + } + + return stateStore{ + dWNTable, + }, nil +} diff --git a/api/vault/v1/state.pulsar.go b/api/vault/v1/state.pulsar.go new file mode 100644 index 000000000..b99a0cbe6 --- /dev/null +++ b/api/vault/v1/state.pulsar.go @@ -0,0 +1,627 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package vaultv1 + +import ( + _ "cosmossdk.io/api/cosmos/orm/v1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_DWN protoreflect.MessageDescriptor + fd_DWN_account protoreflect.FieldDescriptor + fd_DWN_amount protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_state_proto_init() + md_DWN = File_vault_v1_state_proto.Messages().ByName("DWN") + fd_DWN_account = md_DWN.Fields().ByName("account") + fd_DWN_amount = md_DWN.Fields().ByName("amount") +} + +var _ protoreflect.Message = (*fastReflection_DWN)(nil) + +type fastReflection_DWN DWN + +func (x *DWN) ProtoReflect() protoreflect.Message { + return (*fastReflection_DWN)(x) +} + +func (x *DWN) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_state_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_DWN_messageType fastReflection_DWN_messageType +var _ protoreflect.MessageType = fastReflection_DWN_messageType{} + +type fastReflection_DWN_messageType struct{} + +func (x fastReflection_DWN_messageType) Zero() protoreflect.Message { + return (*fastReflection_DWN)(nil) +} +func (x fastReflection_DWN_messageType) New() protoreflect.Message { + return new(fastReflection_DWN) +} +func (x fastReflection_DWN_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_DWN +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_DWN) Descriptor() protoreflect.MessageDescriptor { + return md_DWN +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_DWN) Type() protoreflect.MessageType { + return _fastReflection_DWN_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_DWN) New() protoreflect.Message { + return new(fastReflection_DWN) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_DWN) Interface() protoreflect.ProtoMessage { + return (*DWN)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_DWN) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Account) != 0 { + value := protoreflect.ValueOfBytes(x.Account) + if !f(fd_DWN_account, value) { + return + } + } + if x.Amount != uint64(0) { + value := protoreflect.ValueOfUint64(x.Amount) + if !f(fd_DWN_amount, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_DWN) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.DWN.account": + return len(x.Account) != 0 + case "vault.v1.DWN.amount": + return x.Amount != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DWN) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.DWN.account": + x.Account = nil + case "vault.v1.DWN.amount": + x.Amount = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_DWN) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.DWN.account": + value := x.Account + return protoreflect.ValueOfBytes(value) + case "vault.v1.DWN.amount": + value := x.Amount + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DWN) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.DWN.account": + x.Account = value.Bytes() + case "vault.v1.DWN.amount": + x.Amount = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DWN) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.DWN.account": + panic(fmt.Errorf("field account of message vault.v1.DWN is not mutable")) + case "vault.v1.DWN.amount": + panic(fmt.Errorf("field amount of message vault.v1.DWN is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_DWN) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.DWN.account": + return protoreflect.ValueOfBytes(nil) + case "vault.v1.DWN.amount": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.DWN")) + } + panic(fmt.Errorf("message vault.v1.DWN does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_DWN) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.DWN", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_DWN) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_DWN) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_DWN) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_DWN) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*DWN) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Account) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Amount != 0 { + n += 1 + runtime.Sov(uint64(x.Amount)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*DWN) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Amount != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Amount)) + i-- + dAtA[i] = 0x10 + } + if len(x.Account) > 0 { + i -= len(x.Account) + copy(dAtA[i:], x.Account) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Account))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*DWN) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DWN: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: DWN: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Account = append(x.Account[:0], dAtA[iNdEx:postIndex]...) + if x.Account == nil { + x.Account = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + x.Amount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Amount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: vault/v1/state.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DWN struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account []byte `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *DWN) Reset() { + *x = DWN{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_state_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DWN) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DWN) ProtoMessage() {} + +// Deprecated: Use DWN.ProtoReflect.Descriptor instead. +func (*DWN) Descriptor() ([]byte, []int) { + return file_vault_v1_state_proto_rawDescGZIP(), []int{0} +} + +func (x *DWN) GetAccount() []byte { + if x != nil { + return x.Account + } + return nil +} + +func (x *DWN) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +var File_vault_v1_state_proto protoreflect.FileDescriptor + +var file_vault_v1_state_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, + 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x03, 0x44, 0x57, 0x4e, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x3a, 0x1f, 0xf2, 0x9e, 0xd3, 0x8e, 0x03, 0x19, 0x0a, 0x09, 0x0a, 0x07, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x10, + 0x01, 0x18, 0x01, 0x42, 0x88, 0x01, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x61, 0x75, 0x6c, + 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, + 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x56, 0x61, + 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x09, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_vault_v1_state_proto_rawDescOnce sync.Once + file_vault_v1_state_proto_rawDescData = file_vault_v1_state_proto_rawDesc +) + +func file_vault_v1_state_proto_rawDescGZIP() []byte { + file_vault_v1_state_proto_rawDescOnce.Do(func() { + file_vault_v1_state_proto_rawDescData = protoimpl.X.CompressGZIP(file_vault_v1_state_proto_rawDescData) + }) + return file_vault_v1_state_proto_rawDescData +} + +var file_vault_v1_state_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_vault_v1_state_proto_goTypes = []interface{}{ + (*DWN)(nil), // 0: vault.v1.DWN +} +var file_vault_v1_state_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_vault_v1_state_proto_init() } +func file_vault_v1_state_proto_init() { + if File_vault_v1_state_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_vault_v1_state_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DWN); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vault_v1_state_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_vault_v1_state_proto_goTypes, + DependencyIndexes: file_vault_v1_state_proto_depIdxs, + MessageInfos: file_vault_v1_state_proto_msgTypes, + }.Build() + File_vault_v1_state_proto = out.File + file_vault_v1_state_proto_rawDesc = nil + file_vault_v1_state_proto_goTypes = nil + file_vault_v1_state_proto_depIdxs = nil +} diff --git a/api/vault/v1/tx.pulsar.go b/api/vault/v1/tx.pulsar.go new file mode 100644 index 000000000..48e2deae1 --- /dev/null +++ b/api/vault/v1/tx.pulsar.go @@ -0,0 +1,2388 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package vaultv1 + +import ( + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_tx_proto_init() + md_MsgUpdateParams = File_vault_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "vault.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.MsgUpdateParams.authority": + x.Authority = "" + case "vault.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "vault.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "vault.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "vault.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message vault.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "vault.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_vault_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_vault_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgAllocateVault protoreflect.MessageDescriptor + fd_MsgAllocateVault_authority protoreflect.FieldDescriptor + fd_MsgAllocateVault_subject protoreflect.FieldDescriptor + fd_MsgAllocateVault_origin protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_tx_proto_init() + md_MsgAllocateVault = File_vault_v1_tx_proto.Messages().ByName("MsgAllocateVault") + fd_MsgAllocateVault_authority = md_MsgAllocateVault.Fields().ByName("authority") + fd_MsgAllocateVault_subject = md_MsgAllocateVault.Fields().ByName("subject") + fd_MsgAllocateVault_origin = md_MsgAllocateVault.Fields().ByName("origin") +} + +var _ protoreflect.Message = (*fastReflection_MsgAllocateVault)(nil) + +type fastReflection_MsgAllocateVault MsgAllocateVault + +func (x *MsgAllocateVault) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAllocateVault)(x) +} + +func (x *MsgAllocateVault) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_tx_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAllocateVault_messageType fastReflection_MsgAllocateVault_messageType +var _ protoreflect.MessageType = fastReflection_MsgAllocateVault_messageType{} + +type fastReflection_MsgAllocateVault_messageType struct{} + +func (x fastReflection_MsgAllocateVault_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAllocateVault)(nil) +} +func (x fastReflection_MsgAllocateVault_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVault) +} +func (x fastReflection_MsgAllocateVault_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVault +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAllocateVault) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVault +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAllocateVault) Type() protoreflect.MessageType { + return _fastReflection_MsgAllocateVault_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAllocateVault) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVault) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAllocateVault) Interface() protoreflect.ProtoMessage { + return (*MsgAllocateVault)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAllocateVault) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgAllocateVault_authority, value) { + return + } + } + if x.Subject != "" { + value := protoreflect.ValueOfString(x.Subject) + if !f(fd_MsgAllocateVault_subject, value) { + return + } + } + if x.Origin != "" { + value := protoreflect.ValueOfString(x.Origin) + if !f(fd_MsgAllocateVault_origin, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAllocateVault) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.MsgAllocateVault.authority": + return x.Authority != "" + case "vault.v1.MsgAllocateVault.subject": + return x.Subject != "" + case "vault.v1.MsgAllocateVault.origin": + return x.Origin != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVault) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.MsgAllocateVault.authority": + x.Authority = "" + case "vault.v1.MsgAllocateVault.subject": + x.Subject = "" + case "vault.v1.MsgAllocateVault.origin": + x.Origin = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAllocateVault) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.MsgAllocateVault.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "vault.v1.MsgAllocateVault.subject": + value := x.Subject + return protoreflect.ValueOfString(value) + case "vault.v1.MsgAllocateVault.origin": + value := x.Origin + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVault) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.MsgAllocateVault.authority": + x.Authority = value.Interface().(string) + case "vault.v1.MsgAllocateVault.subject": + x.Subject = value.Interface().(string) + case "vault.v1.MsgAllocateVault.origin": + x.Origin = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVault) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgAllocateVault.authority": + panic(fmt.Errorf("field authority of message vault.v1.MsgAllocateVault is not mutable")) + case "vault.v1.MsgAllocateVault.subject": + panic(fmt.Errorf("field subject of message vault.v1.MsgAllocateVault is not mutable")) + case "vault.v1.MsgAllocateVault.origin": + panic(fmt.Errorf("field origin of message vault.v1.MsgAllocateVault is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAllocateVault) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgAllocateVault.authority": + return protoreflect.ValueOfString("") + case "vault.v1.MsgAllocateVault.subject": + return protoreflect.ValueOfString("") + case "vault.v1.MsgAllocateVault.origin": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVault")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVault does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAllocateVault) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.MsgAllocateVault", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAllocateVault) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVault) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAllocateVault) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAllocateVault) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAllocateVault) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Subject) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Origin) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAllocateVault) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Origin) > 0 { + i -= len(x.Origin) + copy(dAtA[i:], x.Origin) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin))) + i-- + dAtA[i] = 0x1a + } + if len(x.Subject) > 0 { + i -= len(x.Subject) + copy(dAtA[i:], x.Subject) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAllocateVault) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgAllocateVaultResponse protoreflect.MessageDescriptor + fd_MsgAllocateVaultResponse_cid protoreflect.FieldDescriptor + fd_MsgAllocateVaultResponse_expiry_block protoreflect.FieldDescriptor + fd_MsgAllocateVaultResponse_token protoreflect.FieldDescriptor + fd_MsgAllocateVaultResponse_localhost protoreflect.FieldDescriptor +) + +func init() { + file_vault_v1_tx_proto_init() + md_MsgAllocateVaultResponse = File_vault_v1_tx_proto.Messages().ByName("MsgAllocateVaultResponse") + fd_MsgAllocateVaultResponse_cid = md_MsgAllocateVaultResponse.Fields().ByName("cid") + fd_MsgAllocateVaultResponse_expiry_block = md_MsgAllocateVaultResponse.Fields().ByName("expiry_block") + fd_MsgAllocateVaultResponse_token = md_MsgAllocateVaultResponse.Fields().ByName("token") + fd_MsgAllocateVaultResponse_localhost = md_MsgAllocateVaultResponse.Fields().ByName("localhost") +} + +var _ protoreflect.Message = (*fastReflection_MsgAllocateVaultResponse)(nil) + +type fastReflection_MsgAllocateVaultResponse MsgAllocateVaultResponse + +func (x *MsgAllocateVaultResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAllocateVaultResponse)(x) +} + +func (x *MsgAllocateVaultResponse) slowProtoReflect() protoreflect.Message { + mi := &file_vault_v1_tx_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAllocateVaultResponse_messageType fastReflection_MsgAllocateVaultResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgAllocateVaultResponse_messageType{} + +type fastReflection_MsgAllocateVaultResponse_messageType struct{} + +func (x fastReflection_MsgAllocateVaultResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAllocateVaultResponse)(nil) +} +func (x fastReflection_MsgAllocateVaultResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVaultResponse) +} +func (x fastReflection_MsgAllocateVaultResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVaultResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAllocateVaultResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAllocateVaultResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAllocateVaultResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgAllocateVaultResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAllocateVaultResponse) New() protoreflect.Message { + return new(fastReflection_MsgAllocateVaultResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAllocateVaultResponse) Interface() protoreflect.ProtoMessage { + return (*MsgAllocateVaultResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAllocateVaultResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Cid != "" { + value := protoreflect.ValueOfString(x.Cid) + if !f(fd_MsgAllocateVaultResponse_cid, value) { + return + } + } + if x.ExpiryBlock != int64(0) { + value := protoreflect.ValueOfInt64(x.ExpiryBlock) + if !f(fd_MsgAllocateVaultResponse_expiry_block, value) { + return + } + } + if x.Token != "" { + value := protoreflect.ValueOfString(x.Token) + if !f(fd_MsgAllocateVaultResponse_token, value) { + return + } + } + if x.Localhost != false { + value := protoreflect.ValueOfBool(x.Localhost) + if !f(fd_MsgAllocateVaultResponse_localhost, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAllocateVaultResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + return x.Cid != "" + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + return x.ExpiryBlock != int64(0) + case "vault.v1.MsgAllocateVaultResponse.token": + return x.Token != "" + case "vault.v1.MsgAllocateVaultResponse.localhost": + return x.Localhost != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVaultResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + x.Cid = "" + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + x.ExpiryBlock = int64(0) + case "vault.v1.MsgAllocateVaultResponse.token": + x.Token = "" + case "vault.v1.MsgAllocateVaultResponse.localhost": + x.Localhost = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAllocateVaultResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + value := x.Cid + return protoreflect.ValueOfString(value) + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + value := x.ExpiryBlock + return protoreflect.ValueOfInt64(value) + case "vault.v1.MsgAllocateVaultResponse.token": + value := x.Token + return protoreflect.ValueOfString(value) + case "vault.v1.MsgAllocateVaultResponse.localhost": + value := x.Localhost + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVaultResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + x.Cid = value.Interface().(string) + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + x.ExpiryBlock = value.Int() + case "vault.v1.MsgAllocateVaultResponse.token": + x.Token = value.Interface().(string) + case "vault.v1.MsgAllocateVaultResponse.localhost": + x.Localhost = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVaultResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + panic(fmt.Errorf("field cid of message vault.v1.MsgAllocateVaultResponse is not mutable")) + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + panic(fmt.Errorf("field expiry_block of message vault.v1.MsgAllocateVaultResponse is not mutable")) + case "vault.v1.MsgAllocateVaultResponse.token": + panic(fmt.Errorf("field token of message vault.v1.MsgAllocateVaultResponse is not mutable")) + case "vault.v1.MsgAllocateVaultResponse.localhost": + panic(fmt.Errorf("field localhost of message vault.v1.MsgAllocateVaultResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAllocateVaultResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "vault.v1.MsgAllocateVaultResponse.cid": + return protoreflect.ValueOfString("") + case "vault.v1.MsgAllocateVaultResponse.expiry_block": + return protoreflect.ValueOfInt64(int64(0)) + case "vault.v1.MsgAllocateVaultResponse.token": + return protoreflect.ValueOfString("") + case "vault.v1.MsgAllocateVaultResponse.localhost": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: vault.v1.MsgAllocateVaultResponse")) + } + panic(fmt.Errorf("message vault.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAllocateVaultResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in vault.v1.MsgAllocateVaultResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAllocateVaultResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAllocateVaultResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAllocateVaultResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAllocateVaultResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAllocateVaultResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Cid) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.ExpiryBlock != 0 { + n += 1 + runtime.Sov(uint64(x.ExpiryBlock)) + } + l = len(x.Token) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Localhost { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAllocateVaultResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Localhost { + i-- + if x.Localhost { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(x.Token) > 0 { + i -= len(x.Token) + copy(dAtA[i:], x.Token) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) + i-- + dAtA[i] = 0x1a + } + if x.ExpiryBlock != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ExpiryBlock)) + i-- + dAtA[i] = 0x10 + } + if len(x.Cid) > 0 { + i -= len(x.Cid) + copy(dAtA[i:], x.Cid) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Cid))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAllocateVaultResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Cid = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) + } + x.ExpiryBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ExpiryBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Localhost", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Localhost = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: vault/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgUpdateParams is the Msg/UpdateParams request type. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_vault_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_tx_proto_rawDescGZIP(), []int{1} +} + +// MsgAllocateVault is the message type for the AllocateVault RPC. +type MsgAllocateVault struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address of the service account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // subject is a unique human-defined identifier to associate with the vault. + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + // origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` +} + +func (x *MsgAllocateVault) Reset() { + *x = MsgAllocateVault{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAllocateVault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAllocateVault) ProtoMessage() {} + +// Deprecated: Use MsgAllocateVault.ProtoReflect.Descriptor instead. +func (*MsgAllocateVault) Descriptor() ([]byte, []int) { + return file_vault_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgAllocateVault) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgAllocateVault) GetSubject() string { + if x != nil { + return x.Subject + } + return "" +} + +func (x *MsgAllocateVault) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +type MsgAllocateVaultResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // CID is the content identifier of the vault. + Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` + // ExpiryBlock is the block number at which the vault will expire. + ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` + // RegistrationOptions is a json string of the + // PublicKeyCredentialCreationOptions for WebAuthn + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + // IsLocalhost is a flag to indicate if the vault is localhost + Localhost bool `protobuf:"varint,4,opt,name=localhost,proto3" json:"localhost,omitempty"` +} + +func (x *MsgAllocateVaultResponse) Reset() { + *x = MsgAllocateVaultResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_vault_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAllocateVaultResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAllocateVaultResponse) ProtoMessage() {} + +// Deprecated: Use MsgAllocateVaultResponse.ProtoReflect.Descriptor instead. +func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { + return file_vault_v1_tx_proto_rawDescGZIP(), []int{3} +} + +func (x *MsgAllocateVaultResponse) GetCid() string { + if x != nil { + return x.Cid + } + return "" +} + +func (x *MsgAllocateVaultResponse) GetExpiryBlock() int64 { + if x != nil { + return x.ExpiryBlock + } + return 0 +} + +func (x *MsgAllocateVaultResponse) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *MsgAllocateVaultResponse) GetLocalhost() bool { + if x != nil { + return x.Localhost + } + return false +} + +var File_vault_v1_tx_proto protoreflect.FileDescriptor + +var file_vault_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x11, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x89, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, + 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x63, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, + 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x32, 0xab, 0x01, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x12, 0x4f, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x1a, 0x22, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x21, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x85, 0x01, 0x0a, 0x0c, 0x63, 0x6f, + 0x6d, 0x2e, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x56, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x14, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_vault_v1_tx_proto_rawDescOnce sync.Once + file_vault_v1_tx_proto_rawDescData = file_vault_v1_tx_proto_rawDesc +) + +func file_vault_v1_tx_proto_rawDescGZIP() []byte { + file_vault_v1_tx_proto_rawDescOnce.Do(func() { + file_vault_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_vault_v1_tx_proto_rawDescData) + }) + return file_vault_v1_tx_proto_rawDescData +} + +var file_vault_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_vault_v1_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: vault.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: vault.v1.MsgUpdateParamsResponse + (*MsgAllocateVault)(nil), // 2: vault.v1.MsgAllocateVault + (*MsgAllocateVaultResponse)(nil), // 3: vault.v1.MsgAllocateVaultResponse + (*Params)(nil), // 4: vault.v1.Params +} +var file_vault_v1_tx_proto_depIdxs = []int32{ + 4, // 0: vault.v1.MsgUpdateParams.params:type_name -> vault.v1.Params + 2, // 1: vault.v1.Msg.AllocateVault:input_type -> vault.v1.MsgAllocateVault + 0, // 2: vault.v1.Msg.UpdateParams:input_type -> vault.v1.MsgUpdateParams + 3, // 3: vault.v1.Msg.AllocateVault:output_type -> vault.v1.MsgAllocateVaultResponse + 1, // 4: vault.v1.Msg.UpdateParams:output_type -> vault.v1.MsgUpdateParamsResponse + 3, // [3:5] is the sub-list for method output_type + 1, // [1:3] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_vault_v1_tx_proto_init() } +func file_vault_v1_tx_proto_init() { + if File_vault_v1_tx_proto != nil { + return + } + file_vault_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_vault_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAllocateVault); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vault_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAllocateVaultResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_vault_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_vault_v1_tx_proto_goTypes, + DependencyIndexes: file_vault_v1_tx_proto_depIdxs, + MessageInfos: file_vault_v1_tx_proto_msgTypes, + }.Build() + File_vault_v1_tx_proto = out.File + file_vault_v1_tx_proto_rawDesc = nil + file_vault_v1_tx_proto_goTypes = nil + file_vault_v1_tx_proto_depIdxs = nil +} diff --git a/api/vault/v1/tx_grpc.pb.go b/api/vault/v1/tx_grpc.pb.go new file mode 100644 index 000000000..9ba35ba81 --- /dev/null +++ b/api/vault/v1/tx_grpc.pb.go @@ -0,0 +1,158 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: vault/v1/tx.proto + +package vaultv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_AllocateVault_FullMethodName = "/vault.v1.Msg/AllocateVault" + Msg_UpdateParams_FullMethodName = "/vault.v1.Msg/UpdateParams" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // AllocateVault assembles a sqlite3 database in a local directory and returns + // the CID of the database. this operation is called by services initiating a + // controller registration. + AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { + out := new(MsgAllocateVaultResponse) + err := c.cc.Invoke(ctx, Msg_AllocateVault_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // AllocateVault assembles a sqlite3 database in a local directory and returns + // the CID of the database. this operation is called by services initiating a + // controller registration. + AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") +} +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAllocateVault) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AllocateVault(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_AllocateVault_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "vault.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AllocateVault", + Handler: _Msg_AllocateVault_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "vault/v1/tx.proto", +} diff --git a/app/app.go b/app/app.go index 077441b0a..2bfec6c1c 100644 --- a/app/app.go +++ b/app/app.go @@ -134,6 +134,12 @@ import ( ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + did "github.com/onsonr/sonr/x/did" + didkeeper "github.com/onsonr/sonr/x/did/keeper" + didtypes "github.com/onsonr/sonr/x/did/types" + vault "github.com/onsonr/sonr/x/vault" + vaultkeeper "github.com/onsonr/sonr/x/vault/keeper" + vaulttypes "github.com/onsonr/sonr/x/vault/types" "github.com/spf13/cast" globalfee "github.com/strangelove-ventures/globalfee/x/globalfee" globalfeekeeper "github.com/strangelove-ventures/globalfee/x/globalfee/keeper" @@ -144,10 +150,6 @@ import ( tokenfactory "github.com/strangelove-ventures/tokenfactory/x/tokenfactory" tokenfactorykeeper "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/keeper" tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types" - - did "github.com/onsonr/sonr/x/did" - didkeeper "github.com/onsonr/sonr/x/did/keeper" - didtypes "github.com/onsonr/sonr/x/did/types" ) const appName = "sonr" @@ -226,6 +228,7 @@ type SonrApp struct { CrisisKeeper *crisiskeeper.Keeper UpgradeKeeper *upgradekeeper.Keeper legacyAmino *codec.LegacyAmino + VaultKeeper vaultkeeper.Keeper sm *module.SimulationManager BasicModuleManager module.BasicManager ModuleManager *module.Manager @@ -358,6 +361,7 @@ func NewChainApp( globalfeetypes.StoreKey, packetforwardtypes.StoreKey, didtypes.StoreKey, + vaulttypes.StoreKey, ) tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) @@ -606,6 +610,15 @@ func NewChainApp( // If evidence needs to be handled for the app, set routes in router here and seal app.EvidenceKeeper = *evidenceKeeper + // Create the vault Keeper + app.VaultKeeper = vaultkeeper.NewKeeper( + appCodec, + sdkruntime.NewKVStoreService(keys[vaulttypes.StoreKey]), + logger, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + app.DidKeeper, + ) + // Create the did Keeper app.DidKeeper = didkeeper.NewKeeper( appCodec, @@ -874,6 +887,7 @@ func NewChainApp( ), did.NewAppModule(appCodec, app.DidKeeper, app.NFTKeeper), + vault.NewAppModule(appCodec, app.VaultKeeper), ) // BasicModuleManager defines the module BasicManager is in charge of setting up basic, @@ -922,6 +936,7 @@ func NewChainApp( tokenfactorytypes.ModuleName, packetforwardtypes.ModuleName, didtypes.ModuleName, + vaulttypes.ModuleName, ) app.ModuleManager.SetOrderEndBlockers( @@ -941,6 +956,7 @@ func NewChainApp( tokenfactorytypes.ModuleName, packetforwardtypes.ModuleName, didtypes.ModuleName, + vaulttypes.ModuleName, ) // NOTE: The genutils module must occur after staking so that pools are @@ -969,6 +985,7 @@ func NewChainApp( globalfeetypes.ModuleName, packetforwardtypes.ModuleName, didtypes.ModuleName, + vaulttypes.ModuleName, } app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...) app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...) @@ -1127,7 +1144,7 @@ func GetDefaultBypassFeeMessages() []string { sdk.MsgTypeURL(&ibcchanneltypes.MsgChannelOpenTry{}), sdk.MsgTypeURL(&ibcchanneltypes.MsgChannelOpenConfirm{}), sdk.MsgTypeURL(&ibcchanneltypes.MsgChannelOpenAck{}), - sdk.MsgTypeURL(&didtypes.MsgAllocateVault{}), + sdk.MsgTypeURL(&vaulttypes.MsgAllocateVault{}), sdk.MsgTypeURL(&didtypes.MsgRegisterController{}), } } @@ -1428,6 +1445,7 @@ func initParamsKeeper( paramsKeeper.Subspace(packetforwardtypes.ModuleName). WithKeyTable(packetforwardtypes.ParamKeyTable()) paramsKeeper.Subspace(didtypes.ModuleName) + paramsKeeper.Subspace(vaulttypes.ModuleName) return paramsKeeper } diff --git a/internal/cli/dexmodel/dexmodel.go b/app/cli/dexmodel/dexmodel.go similarity index 100% rename from internal/cli/dexmodel/dexmodel.go rename to app/cli/dexmodel/dexmodel.go diff --git a/internal/cli/tui.go b/app/cli/tui.go similarity index 74% rename from internal/cli/tui.go rename to app/cli/tui.go index f49f6c7cf..b5305baff 100644 --- a/internal/cli/tui.go +++ b/app/cli/tui.go @@ -5,17 +5,12 @@ import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/onsonr/sonr/internal/cli/dexmodel" - "github.com/onsonr/sonr/internal/cli/txmodel" + "github.com/onsonr/sonr/app/cli/dexmodel" + "github.com/onsonr/sonr/app/cli/txmodel" "github.com/spf13/cobra" ) -func AddTUICmds(rootCmd *cobra.Command) { - rootCmd.AddCommand(newBuildTxnTUICmd()) - rootCmd.AddCommand(newExplorerTUICmd()) -} - -func newBuildTxnTUICmd() *cobra.Command { +func NewBuildTxnTUICmd() *cobra.Command { return &cobra.Command{ Use: "dash", Short: "TUI for managing the local Sonr validator node", @@ -40,7 +35,7 @@ func newBuildTxnTUICmd() *cobra.Command { } } -func newExplorerTUICmd() *cobra.Command { +func NewExplorerTUICmd() *cobra.Command { return &cobra.Command{ Use: "cosmos-explorer", Short: "A terminal-based Cosmos blockchain explorer", diff --git a/internal/cli/txmodel/txmodel.go b/app/cli/txmodel/txmodel.go similarity index 100% rename from internal/cli/txmodel/txmodel.go rename to app/cli/txmodel/txmodel.go diff --git a/app/context.go b/app/context.go deleted file mode 100644 index 79de9d673..000000000 --- a/app/context.go +++ /dev/null @@ -1,23 +0,0 @@ -package app - -import ( - "context" - - "github.com/go-webauthn/webauthn/protocol" -) - -// Default Key in gRPC Metadata for the Session ID -const MetadataSessionIDKey = "sonr-session-id" - -// SonrContext is the context for the Sonr API -type SonrContext struct { - Context context.Context - SessionID string `json:"session_id"` - UserAddress string `json:"user_address"` - ValidatorAddress string `json:"validator_address"` - ServiceOrigin string `json:"service_origin"` - PeerID string `json:"peer_id"` - ChainID string `json:"chain_id"` - Token string `json:"token"` - Challenge protocol.URLEncodedBase64 `json:"challenge"` -} diff --git a/app/proxy/command.go b/app/proxy/command.go new file mode 100644 index 000000000..60416d160 --- /dev/null +++ b/app/proxy/command.go @@ -0,0 +1,56 @@ +package proxy + +import ( + "context" + "net/http" + "os" + "os/signal" + "time" + + "github.com/labstack/echo/v4" + "github.com/labstack/gommon/log" + "github.com/onsonr/sonr/nebula/pages" + "github.com/spf13/cobra" +) + +func NewProxyCmd() *cobra.Command { + return &cobra.Command{ + Use: "dwn-proxy", + Short: "Starts the DWN proxy server for the local IPFS node", + Run: func(cmd *cobra.Command, args []string) { + // Echo instance + e := echo.New() + e.Logger.SetLevel(log.INFO) + + // Load config + _, err := LoadConfig("./") + if err != nil { + e.Logger.Error(err) + } + + // Configure the server + e.GET("/", pages.Home) + e.GET("/allocate", pages.Profile) + + // Start server + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) + defer stop() + // Start server + go func() { + if err := e.Start(":1323"); err != nil && err != http.ErrServerClosed { + e.Logger.Fatal("shutting down the server") + } + }() + + // Wait for interrupt signal to gracefully shutdown the server with a timeout of 10 seconds. + <-ctx.Done() + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Shutdown the server with 10 seconds timeout. + if err := e.Shutdown(ctx); err != nil { + e.Logger.Fatal(err) + } + }, + } +} diff --git a/app/proxy/config.go b/app/proxy/config.go new file mode 100644 index 000000000..cf906f035 --- /dev/null +++ b/app/proxy/config.go @@ -0,0 +1,31 @@ +package proxy + +import "github.com/spf13/viper" + +type Config struct { + Host string `mapstructure:"HOST"` + Port string `mapstructure:"PORT"` + SSL bool `mapstructure:"SSL"` + CertFile string `mapstructure:"CERT_FILE"` + KeyFile string `mapstructure:"KEY_FILE"` +} + +func (c *Config) GetHostname() string { + return c.Host + ":" + c.Port +} + +func LoadConfig(path string) (config Config, err error) { + viper.AddConfigPath(path) + viper.SetConfigName("app") + viper.SetConfigType("env") + + viper.AutomaticEnv() + + err = viper.ReadInConfig() + if err != nil { + return + } + + err = viper.Unmarshal(&config) + return +} diff --git a/cmd/sonrd/main.go b/cmd/sonrd/main.go index 5944aa356..79fc87b98 100644 --- a/cmd/sonrd/main.go +++ b/cmd/sonrd/main.go @@ -8,12 +8,15 @@ import ( _ "github.com/joho/godotenv/autoload" "github.com/onsonr/sonr/app" - "github.com/onsonr/sonr/internal/cli" + "github.com/onsonr/sonr/app/cli" + "github.com/onsonr/sonr/app/proxy" ) func main() { rootCmd := NewRootCmd() - cli.AddTUICmds(rootCmd) + rootCmd.AddCommand(cli.NewBuildTxnTUICmd()) + rootCmd.AddCommand(cli.NewExplorerTUICmd()) + rootCmd.AddCommand(proxy.NewProxyCmd()) if err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome); err != nil { log.NewLogger(rootCmd.OutOrStderr()).Error("failure when running app", "err", err) diff --git a/config/pkl/orm.pkl b/config/pkl/orm.pkl index 145d89654..d08735d6d 100644 --- a/config/pkl/orm.pkl +++ b/config/pkl/orm.pkl @@ -1,6 +1,6 @@ -@go.Package { name = "github.com/onsonr/sonr/internal/orm" } +@go.Package { name = "github.com/onsonr/sonr/x/did/types/orm" } -module orm +module models import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl" diff --git a/config/pkl/web.pkl b/config/pkl/web.pkl deleted file mode 100644 index ed06f3e6b..000000000 --- a/config/pkl/web.pkl +++ /dev/null @@ -1,72 +0,0 @@ -@go.Package { name = "github.com/onsonr/sonr/internal/orm/browser" } - -module browser - -import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl" - - -class JsonField extends go.Field { - structTags { - ["json"] = "%{name},omitempty" - } -} - -class PublicKeyCredentialRequestOptions { - challenge: String - timeout: Int - rpId: String - allowCredentials: List - userVerification: String - extensions: List -} - -class PublicKeyCredentialDescriptor { - id: String - transports: List - type: String -} - -class PublicKeyCredentialParameters { - type: String - alg: Int? -} - -class AuthenticatorSelectionCriteria { - authenticatorAttachment: String - requireResidentKey: Boolean - userVerification: String -} - - -class PublicKeyCredentialCreationOptions { - rp: RpEntity - user: UserEntity - challenge: String - pubKeyCredParams: List - timeout: Int - excludeCredentials: List - authenticatorSelection: AuthenticatorSelectionCriteria? - attestation: String - extensions: List -} - -class RpEntity { - id: String - name: String? - icon: String? -} - -class UserEntity { - id: String - displayName: String? - name: String? -} - -class SWT { - origin: String - location: String - identifier: String - scopes: List - properties: Map - expiryBlock: Int -} diff --git a/deploy/Dockerfile b/deploy/Dockerfile deleted file mode 100644 index 19afcdb8c..000000000 --- a/deploy/Dockerfile +++ /dev/null @@ -1,89 +0,0 @@ -FROM jetpackio/devbox:latest AS sonrvm - -# Installing your devbox project -WORKDIR /code -USER root:root - -RUN mkdir -p /code && chown ${DEVBOX_USER}:${DEVBOX_USER} /code - -USER ${DEVBOX_USER}:${DEVBOX_USER} - -COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.json devbox.json -COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} deploy/process-compose.yaml process-compose.yaml - -RUN devbox run -- echo "Installed Packages." - -ENTRYPOINT ["devbox", "run"] - -# -------------------------------------------------------- -FROM jetpackio/devbox:latest AS sonr-runner - -WORKDIR /code -USER root:root - -RUN mkdir -p /code && chown ${DEVBOX_USER}:${DEVBOX_USER} /code - -USER ${DEVBOX_USER}:${DEVBOX_USER} - -COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.json devbox.json -COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} deploy/process-compose.yaml process-compose.yaml -COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} . . - -RUN devbox run -- echo "Installed Packages." - -RUN git config --global --add safe.directory /code -ENTRYPOINT ["devbox", "run", "testnet"] - -# -------------------------------------------------------- -FROM golang:1.22-alpine AS go-builder - -SHELL ["/bin/sh", "-ecuxo", "pipefail"] - -RUN apk add --no-cache ca-certificates build-base git - -WORKDIR /code - -COPY go.mod go.sum ./ -RUN set -eux; \ - export ARCH=$(uname -m); \ - WASM_VERSION=$(go list -m all | grep github.com/CosmWasm/wasmvm || true); \ - if [ ! -z "${WASM_VERSION}" ]; then \ - WASMVM_REPO=$(echo $WASM_VERSION | awk '{print $1}');\ - WASMVM_VERS=$(echo $WASM_VERSION | awk '{print $2}');\ - wget -O /lib/libwasmvm_muslc.a https://${WASMVM_REPO}/releases/download/${WASMVM_VERS}/libwasmvm_muslc.$(uname -m).a;\ - fi; \ - go mod download; - -# Copy over code -COPY . /code - -# force it to use static lib (from above) not standard libgo_cosmwasm.so file -# then log output of file /code/bin/sonrd -# then ensure static linking -RUN LEDGER_ENABLED=false BUILD_TAGS=muslc LINK_STATICALLY=true make build \ - && file /code/build/sonrd \ - && echo "Ensuring binary is statically linked ..." \ - && (file /code/build/sonrd | grep "statically linked") - -# -------------------------------------------------------- -FROM debian:11-slim - -COPY --from=go-builder /code/build/sonrd /usr/bin/sonrd - -# Install dependencies for Debian 11 -RUN apt-get update && apt-get install -y \ - curl \ - make \ - bash \ - jq \ - sed \ - && rm -rf /var/lib/apt/lists/* - -COPY scripts/test_node.sh /usr/bin/test_node.sh - -WORKDIR /opt - -# rest server, tendermint p2p, tendermint rpc -EXPOSE 1317 26656 26657 6060 - -ENTRYPOINT ["/usr/bin/sonrd"] diff --git a/deploy/air.toml b/deploy/air.toml deleted file mode 100644 index b39d53c8f..000000000 --- a/deploy/air.toml +++ /dev/null @@ -1,50 +0,0 @@ -root = "." -testdata_dir = "testdata" -tmp_dir = "tmp" - -[build] -delay = 1000 -cmd = "devbox run build:motr" -exclude_dir = ["assets", "tmp", "vendor", "testdata"] -exclude_file = [] -exclude_regex = ["_test.go", ".pk.go", "_templ.go", ".pb.go"] -exclude_unchanged = true -follow_symlink = false -full_bin = "bunx wrangler -c ./pkg/proxy/wrangler.toml dev" -include_dir = ["web", "internal/dwn", "pkl"] -include_ext = ["go", "templ", "html", "pkl", "js", "mjs"] -include_file = [ - "wrangler.toml", - "Dockerfile", - ".goreleaser.yaml", - "go.mod", - "devbox.json", - ".air.toml", -] -kill_delay = "2s" -log = "build-errors.log" -poll = false -poll_interval = 0 -post_cmd = [] -pre_cmd = ["templ generate", "devbox run gen:pkl"] -rerun = false -rerun_delay = 500 -send_interrupt = false -stop_on_error = false - -[color] -build = "yellow" -main = "magenta" -runner = "green" -watcher = "cyan" - -[log] -main_only = true -time = true - -[misc] -clean_on_exit = true - -[screen] -clear_on_rebuild = true -keep_scroll = true diff --git a/deploy/docker-compose.yaml b/deploy/docker-compose.yaml deleted file mode 100644 index 9b7687ed8..000000000 --- a/deploy/docker-compose.yaml +++ /dev/null @@ -1,30 +0,0 @@ -version: "3" - -services: - sonr-node: - build: - context: . - dockerfile: Dockerfile - volumes: - - /home/prad/.scnr:/root/.sonr - ports: - - "26657:26657" - - "1317:1317" - - "9090:9090" - environment: - - CHAIN_ID=local-1 - - MONIKER=localvalidator - - KEYRING=test - - KEY=user1 - - KEY2=user2 - - DENOM=usnr - - CLEAN=true - - BLOCK_TIME=5s - command: "start --pruning=nothing" - restart: always - networks: - - sonr-network - -networks: - sonr-network: - name: sonr-network diff --git a/devbox.json b/devbox.json index 8691cb570..0952852e5 100644 --- a/devbox.json +++ b/devbox.json @@ -1,9 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.12.0/.schema/devbox.schema.json", "packages": [ - "go@1.22", - "bun@latest", - "process-compose@latest" + "go@1.22" ], "env": { "CLOUDFLARE_API_TOKEN": "$CLOUDFLARE_API_TOKEN", @@ -30,9 +28,6 @@ "build:image": [ "make local-image" ], - "build:motr": [ - "make motr" - ], "gen:proto": [ "make proto-gen" ], @@ -53,6 +48,9 @@ ], "serve:sonr": [ "make sh-testnet" + ], + "serve:proxy": [ + "make sh-testnet" ] } } diff --git a/go.mod b/go.mod index 6b3704989..dc4ba2341 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,6 @@ require ( cosmossdk.io/x/upgrade v0.1.1 github.com/a-h/templ v0.2.778 github.com/apple/pkl-go v0.8.0 - github.com/btcsuite/btcd/btcec/v2 v2.3.3 github.com/charmbracelet/bubbles v0.19.0 github.com/charmbracelet/bubbletea v1.1.0 github.com/charmbracelet/huh v0.5.3 @@ -65,11 +64,13 @@ require ( github.com/ethereum/go-ethereum v1.14.6 github.com/go-webauthn/webauthn v0.10.2 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/ipfs/boxo v0.21.0 github.com/ipfs/kubo v0.29.0 github.com/joho/godotenv v1.5.1 github.com/labstack/echo/v4 v4.10.2 + github.com/labstack/gommon v0.4.0 github.com/nlepage/go-js-promise v1.0.0 github.com/onsonr/crypto v1.32.0 github.com/segmentio/ksuid v1.0.4 @@ -81,7 +82,6 @@ require ( github.com/strangelove-ventures/poa v0.50.0 github.com/strangelove-ventures/tokenfactory v0.50.0 github.com/stretchr/testify v1.9.0 - github.com/syumai/workers v0.26.3 golang.org/x/crypto v0.26.0 google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 google.golang.org/grpc v1.64.0 @@ -108,6 +108,7 @@ require ( github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bits-and-blooms/bitset v1.13.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.3 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/bwesterb/go-ristretto v1.2.3 // indirect @@ -180,7 +181,6 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.2 // indirect github.com/gorilla/handlers v1.5.2 // indirect - github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect @@ -232,7 +232,6 @@ require ( github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/labstack/gommon v0.4.0 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect diff --git a/go.sum b/go.sum index 29da40697..94e1ffc63 100644 --- a/go.sum +++ b/go.sum @@ -2048,8 +2048,6 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/syumai/workers v0.26.3 h1:AF+IBaRccbR4JIj2kNJLJblruPFMD/pAbzkopejGcP8= -github.com/syumai/workers v0.26.3/go.mod h1:ZnqmdiHNBrbxOLrZ/HJ5jzHy6af9cmiNZk10R9NrIEA= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= diff --git a/internal/orm/bip44.go b/internal/orm/bip44.go deleted file mode 100644 index a48b40b2e..000000000 --- a/internal/orm/bip44.go +++ /dev/null @@ -1,116 +0,0 @@ -package orm - -import ( - "crypto/hmac" - "crypto/sha512" - "encoding/binary" - "encoding/hex" - "errors" - "math/big" - - "github.com/btcsuite/btcd/btcec/v2" - "github.com/onsonr/sonr/internal/orm/didmethod" -) - -type ChainCode uint32 - -func GetChainCode(m didmethod.DIDMethod) ChainCode { - switch m { - case didmethod.Bitcoin: - return 0 // 0 - case didmethod.Ethereum: - return 64 // 60 - case didmethod.Ibc: - return 118 // 118 - case didmethod.Sonr: - return 703 // 703 - default: - return 0 - } -} - -func FormatAddress(pubKey *PublicKey, m didmethod.DIDMethod) (string, error) { - hexPubKey, err := hex.DecodeString(pubKey.Raw) - if err != nil { - return "", err - } - - // switch m { - // case didmethod.Bitcoin: - // return bech32.Encode("bc", pubKey.Bytes()) - // - // case didmethod.Ethereum: - // epk, err := pubKey.ECDSA() - // if err != nil { - // return "", err - // } - // return ComputeEthAddress(*epk), nil - // - // case didmethod.Sonr: - // return bech32.Encode("idx", hexPubKey) - // - // case didmethod.Ibc: - // return bech32.Encode("cosmos", hexPubKey) - // - // } - return string(hexPubKey), nil -} - -// ComputeAccountPublicKey computes the public key of a child key given the extended public key, chain code, and index. -func ComputeBip32AccountPublicKey(extPubKey PublicKey, chainCode ChainCode, index int) (*PublicKey, error) { - // Check if the index is a hardened child key - if chainCode&0x80000000 != 0 && index < 0 { - return nil, errors.New("invalid index") - } - - hexPubKey, err := hex.DecodeString(extPubKey.Raw) - if err != nil { - return nil, err - } - - // Serialize the public key - pubKey, err := btcec.ParsePubKey(hexPubKey) - if err != nil { - return nil, err - } - pubKeyBytes := pubKey.SerializeCompressed() - - // Serialize the index - indexBytes := make([]byte, 4) - binary.BigEndian.PutUint32(indexBytes, uint32(index)) - - // Compute the HMAC-SHA512 - mac := hmac.New(sha512.New, []byte{byte(chainCode)}) - mac.Write(pubKeyBytes) - mac.Write(indexBytes) - I := mac.Sum(nil) - - // Split I into two 32-byte sequences - IL := I[:32] - - // Convert IL to a big integer - ilNum := new(big.Int).SetBytes(IL) - - // Check if parse256(IL) >= n - curve := btcec.S256() - if ilNum.Cmp(curve.N) >= 0 { - return nil, errors.New("invalid child key") - } - - // Compute the child public key - ilx, ily := curve.ScalarBaseMult(IL) - childX, childY := curve.Add(ilx, ily, pubKey.X(), pubKey.Y()) - lx := newBigIntFieldVal(childX) - ly := newBigIntFieldVal(childY) - - // Create the child public key - _ = btcec.NewPublicKey(lx, ly) - return &PublicKey{}, nil -} - -// newBigIntFieldVal creates a new field value from a big integer. -func newBigIntFieldVal(val *big.Int) *btcec.FieldVal { - lx := new(btcec.FieldVal) - lx.SetByteSlice(val.Bytes()) - return lx -} diff --git a/internal/orm/browser/AuthenticatorSelectionCriteria.pkl.go b/internal/orm/browser/AuthenticatorSelectionCriteria.pkl.go deleted file mode 100644 index a53b382f2..000000000 --- a/internal/orm/browser/AuthenticatorSelectionCriteria.pkl.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type AuthenticatorSelectionCriteria struct { - AuthenticatorAttachment string `pkl:"authenticatorAttachment"` - - RequireResidentKey bool `pkl:"requireResidentKey"` - - UserVerification string `pkl:"userVerification"` -} diff --git a/internal/orm/browser/Browser.pkl.go b/internal/orm/browser/Browser.pkl.go deleted file mode 100644 index 3943b79a5..000000000 --- a/internal/orm/browser/Browser.pkl.go +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -import ( - "context" - - "github.com/apple/pkl-go/pkl" -) - -type Browser struct { -} - -// LoadFromPath loads the pkl module at the given path and evaluates it into a Browser -func LoadFromPath(ctx context.Context, path string) (ret *Browser, err error) { - evaluator, err := pkl.NewEvaluator(ctx, pkl.PreconfiguredOptions) - if err != nil { - return nil, err - } - defer func() { - cerr := evaluator.Close() - if err == nil { - err = cerr - } - }() - ret, err = Load(ctx, evaluator, pkl.FileSource(path)) - return ret, err -} - -// Load loads the pkl module at the given source and evaluates it with the given evaluator into a Browser -func Load(ctx context.Context, evaluator pkl.Evaluator, source *pkl.ModuleSource) (*Browser, error) { - var ret Browser - if err := evaluator.EvaluateModule(ctx, source, &ret); err != nil { - return nil, err - } - return &ret, nil -} diff --git a/internal/orm/browser/PublicKeyCredentialCreationOptions.pkl.go b/internal/orm/browser/PublicKeyCredentialCreationOptions.pkl.go deleted file mode 100644 index db72fb8fe..000000000 --- a/internal/orm/browser/PublicKeyCredentialCreationOptions.pkl.go +++ /dev/null @@ -1,22 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type PublicKeyCredentialCreationOptions struct { - Rp *RpEntity `pkl:"rp"` - - User *UserEntity `pkl:"user"` - - Challenge string `pkl:"challenge"` - - PubKeyCredParams []*PublicKeyCredentialParameters `pkl:"pubKeyCredParams"` - - Timeout int `pkl:"timeout"` - - ExcludeCredentials []*PublicKeyCredentialDescriptor `pkl:"excludeCredentials"` - - AuthenticatorSelection *AuthenticatorSelectionCriteria `pkl:"authenticatorSelection"` - - Attestation string `pkl:"attestation"` - - Extensions []*PublicKeyCredentialParameters `pkl:"extensions"` -} diff --git a/internal/orm/browser/PublicKeyCredentialDescriptor.pkl.go b/internal/orm/browser/PublicKeyCredentialDescriptor.pkl.go deleted file mode 100644 index ac66c213b..000000000 --- a/internal/orm/browser/PublicKeyCredentialDescriptor.pkl.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type PublicKeyCredentialDescriptor struct { - Id string `pkl:"id"` - - Transports []string `pkl:"transports"` - - Type string `pkl:"type"` -} diff --git a/internal/orm/browser/PublicKeyCredentialParameters.pkl.go b/internal/orm/browser/PublicKeyCredentialParameters.pkl.go deleted file mode 100644 index 7c7492bda..000000000 --- a/internal/orm/browser/PublicKeyCredentialParameters.pkl.go +++ /dev/null @@ -1,8 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type PublicKeyCredentialParameters struct { - Type string `pkl:"type"` - - Alg *int `pkl:"alg"` -} diff --git a/internal/orm/browser/PublicKeyCredentialRequestOptions.pkl.go b/internal/orm/browser/PublicKeyCredentialRequestOptions.pkl.go deleted file mode 100644 index f494a9fcb..000000000 --- a/internal/orm/browser/PublicKeyCredentialRequestOptions.pkl.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type PublicKeyCredentialRequestOptions struct { - Challenge string `pkl:"challenge"` - - Timeout int `pkl:"timeout"` - - RpId string `pkl:"rpId"` - - AllowCredentials []*PublicKeyCredentialDescriptor `pkl:"allowCredentials"` - - UserVerification string `pkl:"userVerification"` - - Extensions []*PublicKeyCredentialParameters `pkl:"extensions"` -} diff --git a/internal/orm/browser/RpEntity.pkl.go b/internal/orm/browser/RpEntity.pkl.go deleted file mode 100644 index facd857a2..000000000 --- a/internal/orm/browser/RpEntity.pkl.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type RpEntity struct { - Id string `pkl:"id"` - - Name *string `pkl:"name"` - - Icon *string `pkl:"icon"` -} diff --git a/internal/orm/browser/SWT.pkl.go b/internal/orm/browser/SWT.pkl.go deleted file mode 100644 index 32e9ebe54..000000000 --- a/internal/orm/browser/SWT.pkl.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type SWT struct { - Origin string `pkl:"origin"` - - Location string `pkl:"location"` - - Identifier string `pkl:"identifier"` - - Scopes []string `pkl:"scopes"` - - Properties map[string]string `pkl:"properties"` - - ExpiryBlock int `pkl:"expiryBlock"` -} diff --git a/internal/orm/browser/UserEntity.pkl.go b/internal/orm/browser/UserEntity.pkl.go deleted file mode 100644 index 6b99cb2b8..000000000 --- a/internal/orm/browser/UserEntity.pkl.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -type UserEntity struct { - Id string `pkl:"id"` - - DisplayName *string `pkl:"displayName"` - - Name *string `pkl:"name"` -} diff --git a/internal/orm/browser/init.pkl.go b/internal/orm/browser/init.pkl.go deleted file mode 100644 index df843093c..000000000 --- a/internal/orm/browser/init.pkl.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated from Pkl module `browser`. DO NOT EDIT. -package browser - -import "github.com/apple/pkl-go/pkl" - -func init() { - pkl.RegisterMapping("browser", Browser{}) - pkl.RegisterMapping("browser#PublicKeyCredentialRequestOptions", PublicKeyCredentialRequestOptions{}) - pkl.RegisterMapping("browser#PublicKeyCredentialDescriptor", PublicKeyCredentialDescriptor{}) - pkl.RegisterMapping("browser#PublicKeyCredentialParameters", PublicKeyCredentialParameters{}) - pkl.RegisterMapping("browser#AuthenticatorSelectionCriteria", AuthenticatorSelectionCriteria{}) - pkl.RegisterMapping("browser#PublicKeyCredentialCreationOptions", PublicKeyCredentialCreationOptions{}) - pkl.RegisterMapping("browser#RpEntity", RpEntity{}) - pkl.RegisterMapping("browser#UserEntity", UserEntity{}) - pkl.RegisterMapping("browser#SWT", SWT{}) -} diff --git a/internal/orm/constants.go b/internal/orm/constants.go deleted file mode 100644 index 744733c81..000000000 --- a/internal/orm/constants.go +++ /dev/null @@ -1,334 +0,0 @@ -package orm - -import ( - "github.com/onsonr/sonr/x/did/types" -) - -type ( - AuthenticatorAttachment string - AuthenticatorTransport string -) - -const ( - // Platform represents a platform authenticator is attached using a client device-specific transport, called - // platform attachment, and is usually not removable from the client device. A public key credential bound to a - // platform authenticator is called a platform credential. - Platform AuthenticatorAttachment = "platform" - - // CrossPlatform represents a roaming authenticator is attached using cross-platform transports, called - // cross-platform attachment. Authenticators of this class are removable from, and can "roam" among, client devices. - // A public key credential bound to a roaming authenticator is called a roaming credential. - CrossPlatform AuthenticatorAttachment = "cross-platform" -) - -func ParseAuthenticatorAttachment(s string) AuthenticatorAttachment { - switch s { - case "platform": - return Platform - default: - return CrossPlatform - } -} - -const ( - // USB indicates the respective authenticator can be contacted over removable USB. - USB AuthenticatorTransport = "usb" - - // NFC indicates the respective authenticator can be contacted over Near Field Communication (NFC). - NFC AuthenticatorTransport = "nfc" - - // BLE indicates the respective authenticator can be contacted over Bluetooth Smart (Bluetooth Low Energy / BLE). - BLE AuthenticatorTransport = "ble" - - // SmartCard indicates the respective authenticator can be contacted over ISO/IEC 7816 smart card with contacts. - // - // WebAuthn Level 3. - SmartCard AuthenticatorTransport = "smart-card" - - // Hybrid indicates the respective authenticator can be contacted using a combination of (often separate) - // data-transport and proximity mechanisms. This supports, for example, authentication on a desktop computer using - // a smartphone. - // - // WebAuthn Level 3. - Hybrid AuthenticatorTransport = "hybrid" - - // Internal indicates the respective authenticator is contacted using a client device-specific transport, i.e., it - // is a platform authenticator. These authenticators are not removable from the client device. - Internal AuthenticatorTransport = "internal" -) - -func ParseAuthenticatorTransport(s string) AuthenticatorTransport { - switch s { - case "usb": - return USB - case "nfc": - return NFC - case "ble": - return BLE - case "smart-card": - return SmartCard - case "hybrid": - return Hybrid - default: - return Internal - } -} - -type AuthenticatorFlags byte - -const ( - // FlagUserPresent Bit 00000001 in the byte sequence. Tells us if user is present. Also referred to as the UP flag. - FlagUserPresent AuthenticatorFlags = 1 << iota // Referred to as UP - - // FlagRFU1 is a reserved for future use flag. - FlagRFU1 - - // FlagUserVerified Bit 00000100 in the byte sequence. Tells us if user is verified - // by the authenticator using a biometric or PIN. Also referred to as the UV flag. - FlagUserVerified - - // FlagBackupEligible Bit 00001000 in the byte sequence. Tells us if a backup is eligible for device. Also referred - // to as the BE flag. - FlagBackupEligible // Referred to as BE - - // FlagBackupState Bit 00010000 in the byte sequence. Tells us if a backup state for device. Also referred to as the - // BS flag. - FlagBackupState - - // FlagRFU2 is a reserved for future use flag. - FlagRFU2 - - // FlagAttestedCredentialData Bit 01000000 in the byte sequence. Indicates whether - // the authenticator added attested credential data. Also referred to as the AT flag. - FlagAttestedCredentialData - - // FlagHasExtensions Bit 10000000 in the byte sequence. Indicates if the authenticator data has extensions. Also - // referred to as the ED flag. - FlagHasExtensions -) - -type AttestationFormat string - -const ( - // AttestationFormatPacked is the "packed" attestation statement format is a WebAuthn-optimized format for - // attestation. It uses a very compact but still extensible encoding method. This format is implementable by - // authenticators with limited resources (e.g., secure elements). - AttestationFormatPacked AttestationFormat = "packed" - - // AttestationFormatTPM is the TPM attestation statement format returns an attestation statement in the same format - // as the packed attestation statement format, although the rawData and signature fields are computed differently. - AttestationFormatTPM AttestationFormat = "tpm" - - // AttestationFormatAndroidKey is the attestation statement format for platform authenticators on versions "N", and - // later, which may provide this proprietary "hardware attestation" statement. - AttestationFormatAndroidKey AttestationFormat = "android-key" - - // AttestationFormatAndroidSafetyNet is the attestation statement format that Android-based platform authenticators - // MAY produce an attestation statement based on the Android SafetyNet API. - AttestationFormatAndroidSafetyNet AttestationFormat = "android-safetynet" - - // AttestationFormatFIDOUniversalSecondFactor is the attestation statement format that is used with FIDO U2F - // authenticators. - AttestationFormatFIDOUniversalSecondFactor AttestationFormat = "fido-u2f" - - // AttestationFormatApple is the attestation statement format that is used with Apple devices' platform - // authenticators. - AttestationFormatApple AttestationFormat = "apple" - - // AttestationFormatNone is the attestation statement format that is used to replace any authenticator-provided - // attestation statement when a WebAuthn Relying Party indicates it does not wish to receive attestation information. - AttestationFormatNone AttestationFormat = "none" -) - -func ExtractAttestationFormats(p *types.Params) []AttestationFormat { - var formats []AttestationFormat - for _, v := range p.AttestationFormats { - formats = append(formats, parseAttestationFormat(v)) - } - return formats -} - -func parseAttestationFormat(s string) AttestationFormat { - switch s { - case "packed": - return AttestationFormatPacked - case "tpm": - return AttestationFormatTPM - case "android-key": - return AttestationFormatAndroidKey - case "android-safetynet": - return AttestationFormatAndroidSafetyNet - case "fido-u2f": - return AttestationFormatFIDOUniversalSecondFactor - case "apple": - return AttestationFormatApple - case "none": - return AttestationFormatNone - default: - return AttestationFormatPacked - } -} - -type CredentialType string - -const ( - CredentialTypePublicKeyCredential CredentialType = "public-key" -) - -type ConveyancePreference string - -const ( - // PreferNoAttestation is a ConveyancePreference value. - // - // This value indicates that the Relying Party is not interested in authenticator attestation. For example, in order - // to potentially avoid having to obtain user consent to relay identifying information to the Relying Party, or to - // save a round trip to an Attestation CA or Anonymization CA. - // - // This is the default value. - // - // Specification: §5.4.7. Attestation Conveyance Preference Enumeration (https://www.w3.org/TR/webauthn/#dom-attestationconveyancepreference-none) - PreferNoAttestation ConveyancePreference = "none" - - // PreferIndirectAttestation is a ConveyancePreference value. - // - // This value indicates that the Relying Party prefers an attestation conveyance yielding verifiable attestation - // statements, but allows the client to decide how to obtain such attestation statements. The client MAY replace the - // authenticator-generated attestation statements with attestation statements generated by an Anonymization CA, in - // order to protect the user’s privacy, or to assist Relying Parties with attestation verification in a - // heterogeneous ecosystem. - // - // Note: There is no guarantee that the Relying Party will obtain a verifiable attestation statement in this case. - // For example, in the case that the authenticator employs self attestation. - // - // Specification: §5.4.7. Attestation Conveyance Preference Enumeration (https://www.w3.org/TR/webauthn/#dom-attestationconveyancepreference-indirect) - PreferIndirectAttestation ConveyancePreference = "indirect" - - // PreferDirectAttestation is a ConveyancePreference value. - // - // This value indicates that the Relying Party wants to receive the attestation statement as generated by the - // authenticator. - // - // Specification: §5.4.7. Attestation Conveyance Preference Enumeration (https://www.w3.org/TR/webauthn/#dom-attestationconveyancepreference-direct) - PreferDirectAttestation ConveyancePreference = "direct" - - // PreferEnterpriseAttestation is a ConveyancePreference value. - // - // This value indicates that the Relying Party wants to receive an attestation statement that may include uniquely - // identifying information. This is intended for controlled deployments within an enterprise where the organization - // wishes to tie registrations to specific authenticators. User agents MUST NOT provide such an attestation unless - // the user agent or authenticator configuration permits it for the requested RP ID. - // - // If permitted, the user agent SHOULD signal to the authenticator (at invocation time) that enterprise - // attestation is requested, and convey the resulting AAGUID and attestation statement, unaltered, to the Relying - // Party. - // - // Specification: §5.4.7. Attestation Conveyance Preference Enumeration (https://www.w3.org/TR/webauthn/#dom-attestationconveyancepreference-enterprise) - PreferEnterpriseAttestation ConveyancePreference = "enterprise" -) - -func ExtractConveyancePreference(p *types.Params) ConveyancePreference { - switch p.ConveyancePreference { - case "none": - return PreferNoAttestation - case "indirect": - return PreferIndirectAttestation - case "direct": - return PreferDirectAttestation - case "enterprise": - return PreferEnterpriseAttestation - default: - return PreferNoAttestation - } -} - -type PublicKeyCredentialHints string - -const ( - // PublicKeyCredentialHintSecurityKey is a PublicKeyCredentialHint that indicates that the Relying Party believes - // that users will satisfy this request with a physical security key. For example, an enterprise Relying Party may - // set this hint if they have issued security keys to their employees and will only accept those authenticators for - // registration and authentication. - // - // For compatibility with older user agents, when this hint is used in PublicKeyCredentialCreationOptions, the - // authenticatorAttachment SHOULD be set to cross-platform. - PublicKeyCredentialHintSecurityKey PublicKeyCredentialHints = "security-key" - - // PublicKeyCredentialHintClientDevice is a PublicKeyCredentialHint that indicates that the Relying Party believes - // that users will satisfy this request with a platform authenticator attached to the client device. - // - // For compatibility with older user agents, when this hint is used in PublicKeyCredentialCreationOptions, the - // authenticatorAttachment SHOULD be set to platform. - PublicKeyCredentialHintClientDevice PublicKeyCredentialHints = "client-device" - - // PublicKeyCredentialHintHybrid is a PublicKeyCredentialHint that indicates that the Relying Party believes that - // users will satisfy this request with general-purpose authenticators such as smartphones. For example, a consumer - // Relying Party may believe that only a small fraction of their customers possesses dedicated security keys. This - // option also implies that the local platform authenticator should not be promoted in the UI. - // - // For compatibility with older user agents, when this hint is used in PublicKeyCredentialCreationOptions, the - // authenticatorAttachment SHOULD be set to cross-platform. - PublicKeyCredentialHintHybrid PublicKeyCredentialHints = "hybrid" -) - -func ParsePublicKeyCredentialHints(s string) PublicKeyCredentialHints { - switch s { - case "security-key": - return PublicKeyCredentialHintSecurityKey - case "client-device": - return PublicKeyCredentialHintClientDevice - case "hybrid": - return PublicKeyCredentialHintHybrid - default: - return "" - } -} - -type AttestedCredentialData struct { - AAGUID []byte `json:"aaguid"` - CredentialID []byte `json:"credential_id"` - - // The raw credential public key bytes received from the attestation data. - CredentialPublicKey []byte `json:"public_key"` -} - -type ResidentKeyRequirement string - -const ( - // ResidentKeyRequirementDiscouraged indicates the Relying Party prefers creating a server-side credential, but will - // accept a client-side discoverable credential. This is the default. - ResidentKeyRequirementDiscouraged ResidentKeyRequirement = "discouraged" - - // ResidentKeyRequirementPreferred indicates to the client we would prefer a discoverable credential. - ResidentKeyRequirementPreferred ResidentKeyRequirement = "preferred" - - // ResidentKeyRequirementRequired indicates the Relying Party requires a client-side discoverable credential, and is - // prepared to receive an error if a client-side discoverable credential cannot be created. - ResidentKeyRequirementRequired ResidentKeyRequirement = "required" -) - -func ParseResidentKeyRequirement(s string) ResidentKeyRequirement { - switch s { - case "discouraged": - return ResidentKeyRequirementDiscouraged - case "preferred": - return ResidentKeyRequirementPreferred - default: - return ResidentKeyRequirementRequired - } -} - -type ( - AuthenticationExtensions map[string]any - UserVerificationRequirement string -) - -const ( - // VerificationRequired User verification is required to create/release a credential - VerificationRequired UserVerificationRequirement = "required" - - // VerificationPreferred User verification is preferred to create/release a credential - VerificationPreferred UserVerificationRequirement = "preferred" // This is the default - - // VerificationDiscouraged The authenticator should not verify the user for the credential - VerificationDiscouraged UserVerificationRequirement = "discouraged" -) diff --git a/internal/orm/credential.go b/internal/orm/credential.go deleted file mode 100644 index 5448bba29..000000000 --- a/internal/orm/credential.go +++ /dev/null @@ -1,56 +0,0 @@ -package orm - -import ( - "encoding/base64" - - "github.com/go-webauthn/webauthn/protocol" -) - -// NewCredential will return a credential pointer on successful validation of a registration response. -func NewCredential(c *protocol.ParsedCredentialCreationData, origin, handle string) *Credential { - return &Credential{ - Subject: handle, - Origin: origin, - AttestationType: c.Response.AttestationObject.Format, - CredentialId: BytesToBase64(c.Response.AttestationObject.AuthData.AttData.CredentialID), - PublicKey: BytesToBase64(c.Response.AttestationObject.AuthData.AttData.CredentialPublicKey), - Transport: NormalizeTransports(c.Response.Transports), - SignCount: uint(c.Response.AttestationObject.AuthData.Counter), - UserPresent: c.Response.AttestationObject.AuthData.Flags.HasUserPresent(), - UserVerified: c.Response.AttestationObject.AuthData.Flags.HasUserVerified(), - BackupEligible: c.Response.AttestationObject.AuthData.Flags.HasBackupEligible(), - BackupState: c.Response.AttestationObject.AuthData.Flags.HasAttestedCredentialData(), - } -} - -func BytesToBase64(b []byte) string { - return base64.RawURLEncoding.EncodeToString(b) -} - -func Base64ToBytes(b string) ([]byte, error) { - return base64.RawURLEncoding.DecodeString(b) -} - -// Descriptor converts a Credential into a protocol.CredentialDescriptor. -func (c *Credential) Descriptor() protocol.CredentialDescriptor { - id, err := base64.RawURLEncoding.DecodeString(c.CredentialId) - if err != nil { - panic(err) - } - return protocol.CredentialDescriptor{ - Type: protocol.PublicKeyCredentialType, - CredentialID: id, - Transport: ConvertTransports(c.Transport), - AttestationType: c.AttestationType, - } -} - -// This is a signal that the authenticator may be cloned, see CloneWarning above for more information. -func (a *Credential) UpdateCounter(authDataCount uint) { - if authDataCount <= a.SignCount && (authDataCount != 0 || a.SignCount != 0) { - a.CloneWarning = true - return - } - - a.SignCount = authDataCount -} diff --git a/internal/orm/init.pkl.go b/internal/orm/init.pkl.go deleted file mode 100644 index 390916a45..000000000 --- a/internal/orm/init.pkl.go +++ /dev/null @@ -1,17 +0,0 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. -package orm - -import "github.com/apple/pkl-go/pkl" - -func init() { - pkl.RegisterMapping("orm", Orm{}) - pkl.RegisterMapping("orm#Account", Account{}) - pkl.RegisterMapping("orm#Asset", Asset{}) - pkl.RegisterMapping("orm#Chain", Chain{}) - pkl.RegisterMapping("orm#Credential", Credential{}) - pkl.RegisterMapping("orm#JWK", JWK{}) - pkl.RegisterMapping("orm#Grant", Grant{}) - pkl.RegisterMapping("orm#Keyshare", Keyshare{}) - pkl.RegisterMapping("orm#PublicKey", PublicKey{}) - pkl.RegisterMapping("orm#Profile", Profile{}) -} diff --git a/internal/orm/jwk.go b/internal/orm/jwk.go deleted file mode 100644 index a55d8f226..000000000 --- a/internal/orm/jwk.go +++ /dev/null @@ -1,111 +0,0 @@ -package orm - -import ( - "encoding/base64" - "fmt" - - "github.com/go-webauthn/webauthn/protocol" - "github.com/go-webauthn/webauthn/protocol/webauthncose" -) - -func FormatEC2PublicKey(key *webauthncose.EC2PublicKeyData) (*JWK, error) { - curve, err := GetCOSECurveName(key.Curve) - if err != nil { - return nil, err - } - - jwkMap := map[string]interface{}{ - "kty": "EC", - "crv": curve, - "x": base64.RawURLEncoding.EncodeToString(key.XCoord), - "y": base64.RawURLEncoding.EncodeToString(key.YCoord), - } - - return MapToJWK(jwkMap) -} - -func FormatRSAPublicKey(key *webauthncose.RSAPublicKeyData) (*JWK, error) { - jwkMap := map[string]interface{}{ - "kty": "RSA", - "n": base64.RawURLEncoding.EncodeToString(key.Modulus), - "e": base64.RawURLEncoding.EncodeToString(key.Exponent), - } - - return MapToJWK(jwkMap) -} - -func FormatOKPPublicKey(key *webauthncose.OKPPublicKeyData) (*JWK, error) { - curve, err := GetOKPCurveName(key.Curve) - if err != nil { - return nil, err - } - - jwkMap := map[string]interface{}{ - "kty": "OKP", - "crv": curve, - "x": base64.RawURLEncoding.EncodeToString(key.XCoord), - } - - return MapToJWK(jwkMap) -} - -func MapToJWK(m map[string]interface{}) (*JWK, error) { - jwk := &JWK{} - for k, v := range m { - switch k { - case "kty": - jwk.Kty = v.(string) - case "crv": - jwk.Crv = v.(string) - case "x": - jwk.X = v.(string) - case "y": - jwk.Y = v.(string) - case "n": - jwk.N = v.(string) - case "e": - jwk.E = v.(string) - } - } - return jwk, nil -} - -func GetCOSECurveName(curveID int64) (string, error) { - switch curveID { - case int64(webauthncose.P256): - return "P-256", nil - case int64(webauthncose.P384): - return "P-384", nil - case int64(webauthncose.P521): - return "P-521", nil - default: - return "", fmt.Errorf("unknown curve ID: %d", curveID) - } -} - -func GetOKPCurveName(curveID int64) (string, error) { - switch curveID { - case int64(webauthncose.Ed25519): - return "Ed25519", nil - default: - return "", fmt.Errorf("unknown OKP curve ID: %d", curveID) - } -} - -// ConvertTransports converts the transports from strings to protocol.AuthenticatorTransport -func ConvertTransports(transports []string) []protocol.AuthenticatorTransport { - tss := make([]protocol.AuthenticatorTransport, len(transports)) - for i, t := range transports { - tss[i] = protocol.AuthenticatorTransport(t) - } - return tss -} - -// NormalizeTransports returns the transports as strings -func NormalizeTransports(transports []protocol.AuthenticatorTransport) []string { - tss := make([]string, len(transports)) - for i, t := range transports { - tss[i] = string(t) - } - return tss -} diff --git a/internal/orm/keyalg.go b/internal/orm/keyalg.go deleted file mode 100644 index 387df8d3d..000000000 --- a/internal/orm/keyalg.go +++ /dev/null @@ -1,22 +0,0 @@ -package orm - -import "github.com/onsonr/sonr/internal/orm/keyalgorithm" - -type COSEAlgorithmIdentifier int - -func GetCoseIdentifier(alg keyalgorithm.KeyAlgorithm) COSEAlgorithmIdentifier { - switch alg { - case keyalgorithm.Es256: - return COSEAlgorithmIdentifier(-7) - case keyalgorithm.Es384: - return COSEAlgorithmIdentifier(-35) - case keyalgorithm.Es512: - return COSEAlgorithmIdentifier(-36) - case keyalgorithm.Eddsa: - return COSEAlgorithmIdentifier(-8) - case keyalgorithm.Es256k: - return COSEAlgorithmIdentifier(-10) - default: - return COSEAlgorithmIdentifier(0) - } -} diff --git a/internal/orm/publickey.go b/internal/orm/publickey.go deleted file mode 100644 index 8256d0946..000000000 --- a/internal/orm/publickey.go +++ /dev/null @@ -1,26 +0,0 @@ -package orm - -import ( - "fmt" - - "github.com/go-webauthn/webauthn/protocol/webauthncose" -) - -// ExtractWebAuthnPublicKey parses the raw public key bytes and returns a JWK representation -func ExtractWebAuthnPublicKey(keyBytes []byte) (*JWK, error) { - key, err := webauthncose.ParsePublicKey(keyBytes) - if err != nil { - return nil, fmt.Errorf("failed to parse public key: %w", err) - } - - switch k := key.(type) { - case *webauthncose.EC2PublicKeyData: - return FormatEC2PublicKey(k) - case *webauthncose.RSAPublicKeyData: - return FormatRSAPublicKey(k) - case *webauthncose.OKPPublicKeyData: - return FormatOKPPublicKey(k) - default: - return nil, fmt.Errorf("unsupported key type") - } -} diff --git a/internal/orm/transactions/Msg.pkl.go b/internal/orm/transactions/Msg.pkl.go deleted file mode 100644 index fe8ffcc9a..000000000 --- a/internal/orm/transactions/Msg.pkl.go +++ /dev/null @@ -1,6 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -type Msg interface { - GetTypeUrl() string -} diff --git a/internal/orm/transactions/MsgDidAllocateVault.pkl.go b/internal/orm/transactions/MsgDidAllocateVault.pkl.go deleted file mode 100644 index 0e691f461..000000000 --- a/internal/orm/transactions/MsgDidAllocateVault.pkl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidAllocateVault interface { - Msg - - GetAuthority() string - - GetSubject() string - - GetToken() *pkl.Object -} - -var _ MsgDidAllocateVault = (*MsgDidAllocateVaultImpl)(nil) - -type MsgDidAllocateVaultImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Authority string `pkl:"authority"` - - Subject string `pkl:"subject"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidAllocateVaultImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidAllocateVaultImpl) GetAuthority() string { - return rcv.Authority -} - -func (rcv *MsgDidAllocateVaultImpl) GetSubject() string { - return rcv.Subject -} - -func (rcv *MsgDidAllocateVaultImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidAuthorize.pkl.go b/internal/orm/transactions/MsgDidAuthorize.pkl.go deleted file mode 100644 index b12fc046d..000000000 --- a/internal/orm/transactions/MsgDidAuthorize.pkl.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidAuthorize interface { - Msg - - GetAuthority() string - - GetController() string - - GetAddress() string - - GetOrigin() string - - GetToken() *pkl.Object -} - -var _ MsgDidAuthorize = (*MsgDidAuthorizeImpl)(nil) - -type MsgDidAuthorizeImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Authority string `pkl:"authority"` - - Controller string `pkl:"controller"` - - Address string `pkl:"address"` - - Origin string `pkl:"origin"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidAuthorizeImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidAuthorizeImpl) GetAuthority() string { - return rcv.Authority -} - -func (rcv *MsgDidAuthorizeImpl) GetController() string { - return rcv.Controller -} - -func (rcv *MsgDidAuthorizeImpl) GetAddress() string { - return rcv.Address -} - -func (rcv *MsgDidAuthorizeImpl) GetOrigin() string { - return rcv.Origin -} - -func (rcv *MsgDidAuthorizeImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidProveWitness.pkl.go b/internal/orm/transactions/MsgDidProveWitness.pkl.go deleted file mode 100644 index 8bb849194..000000000 --- a/internal/orm/transactions/MsgDidProveWitness.pkl.go +++ /dev/null @@ -1,52 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidProveWitness interface { - Msg - - GetAuthority() string - - GetProperty() string - - GetWitness() []int - - GetToken() *pkl.Object -} - -var _ MsgDidProveWitness = (*MsgDidProveWitnessImpl)(nil) - -type MsgDidProveWitnessImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Authority string `pkl:"authority"` - - Property string `pkl:"property"` - - Witness []int `pkl:"witness"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidProveWitnessImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidProveWitnessImpl) GetAuthority() string { - return rcv.Authority -} - -func (rcv *MsgDidProveWitnessImpl) GetProperty() string { - return rcv.Property -} - -func (rcv *MsgDidProveWitnessImpl) GetWitness() []int { - return rcv.Witness -} - -func (rcv *MsgDidProveWitnessImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidRegisterController.pkl.go b/internal/orm/transactions/MsgDidRegisterController.pkl.go deleted file mode 100644 index 99907f455..000000000 --- a/internal/orm/transactions/MsgDidRegisterController.pkl.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidRegisterController interface { - Msg - - GetAuthority() string - - GetCid() string - - GetOrigin() string - - GetAuthentication() []*pkl.Object - - GetToken() *pkl.Object -} - -var _ MsgDidRegisterController = (*MsgDidRegisterControllerImpl)(nil) - -type MsgDidRegisterControllerImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Authority string `pkl:"authority"` - - Cid string `pkl:"cid"` - - Origin string `pkl:"origin"` - - Authentication []*pkl.Object `pkl:"authentication"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidRegisterControllerImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidRegisterControllerImpl) GetAuthority() string { - return rcv.Authority -} - -func (rcv *MsgDidRegisterControllerImpl) GetCid() string { - return rcv.Cid -} - -func (rcv *MsgDidRegisterControllerImpl) GetOrigin() string { - return rcv.Origin -} - -func (rcv *MsgDidRegisterControllerImpl) GetAuthentication() []*pkl.Object { - return rcv.Authentication -} - -func (rcv *MsgDidRegisterControllerImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidRegisterService.pkl.go b/internal/orm/transactions/MsgDidRegisterService.pkl.go deleted file mode 100644 index d234865da..000000000 --- a/internal/orm/transactions/MsgDidRegisterService.pkl.go +++ /dev/null @@ -1,76 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidRegisterService interface { - Msg - - GetController() string - - GetOriginUri() string - - GetScopes() *pkl.Object - - GetDescription() string - - GetServiceEndpoints() map[string]string - - GetMetadata() *pkl.Object - - GetToken() *pkl.Object -} - -var _ MsgDidRegisterService = (*MsgDidRegisterServiceImpl)(nil) - -type MsgDidRegisterServiceImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Controller string `pkl:"controller"` - - OriginUri string `pkl:"originUri"` - - Scopes *pkl.Object `pkl:"scopes"` - - Description string `pkl:"description"` - - ServiceEndpoints map[string]string `pkl:"serviceEndpoints"` - - Metadata *pkl.Object `pkl:"metadata"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidRegisterServiceImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidRegisterServiceImpl) GetController() string { - return rcv.Controller -} - -func (rcv *MsgDidRegisterServiceImpl) GetOriginUri() string { - return rcv.OriginUri -} - -func (rcv *MsgDidRegisterServiceImpl) GetScopes() *pkl.Object { - return rcv.Scopes -} - -func (rcv *MsgDidRegisterServiceImpl) GetDescription() string { - return rcv.Description -} - -func (rcv *MsgDidRegisterServiceImpl) GetServiceEndpoints() map[string]string { - return rcv.ServiceEndpoints -} - -func (rcv *MsgDidRegisterServiceImpl) GetMetadata() *pkl.Object { - return rcv.Metadata -} - -func (rcv *MsgDidRegisterServiceImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidSyncVault.pkl.go b/internal/orm/transactions/MsgDidSyncVault.pkl.go deleted file mode 100644 index c4de4ba64..000000000 --- a/internal/orm/transactions/MsgDidSyncVault.pkl.go +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidSyncVault interface { - Msg - - GetController() string - - GetToken() *pkl.Object -} - -var _ MsgDidSyncVault = (*MsgDidSyncVaultImpl)(nil) - -type MsgDidSyncVaultImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Controller string `pkl:"controller"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidSyncVaultImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidSyncVaultImpl) GetController() string { - return rcv.Controller -} - -func (rcv *MsgDidSyncVaultImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgDidUpdateParams.pkl.go b/internal/orm/transactions/MsgDidUpdateParams.pkl.go deleted file mode 100644 index a3e227ab8..000000000 --- a/internal/orm/transactions/MsgDidUpdateParams.pkl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgDidUpdateParams interface { - Msg - - GetAuthority() string - - GetParams() *pkl.Object - - GetToken() *pkl.Object -} - -var _ MsgDidUpdateParams = (*MsgDidUpdateParamsImpl)(nil) - -type MsgDidUpdateParamsImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Authority string `pkl:"authority"` - - Params *pkl.Object `pkl:"params"` - - Token *pkl.Object `pkl:"token"` -} - -// The type URL for the message -func (rcv *MsgDidUpdateParamsImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgDidUpdateParamsImpl) GetAuthority() string { - return rcv.Authority -} - -func (rcv *MsgDidUpdateParamsImpl) GetParams() *pkl.Object { - return rcv.Params -} - -func (rcv *MsgDidUpdateParamsImpl) GetToken() *pkl.Object { - return rcv.Token -} diff --git a/internal/orm/transactions/MsgGovDeposit.pkl.go b/internal/orm/transactions/MsgGovDeposit.pkl.go deleted file mode 100644 index 556d1df7f..000000000 --- a/internal/orm/transactions/MsgGovDeposit.pkl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgGovDeposit interface { - Msg - - GetProposalId() int - - GetDepositor() string - - GetAmount() []*pkl.Object -} - -var _ MsgGovDeposit = (*MsgGovDepositImpl)(nil) - -type MsgGovDepositImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - ProposalId int `pkl:"proposalId"` - - Depositor string `pkl:"depositor"` - - Amount []*pkl.Object `pkl:"amount"` -} - -// The type URL for the message -func (rcv *MsgGovDepositImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGovDepositImpl) GetProposalId() int { - return rcv.ProposalId -} - -func (rcv *MsgGovDepositImpl) GetDepositor() string { - return rcv.Depositor -} - -func (rcv *MsgGovDepositImpl) GetAmount() []*pkl.Object { - return rcv.Amount -} diff --git a/internal/orm/transactions/MsgGovSubmitProposal.pkl.go b/internal/orm/transactions/MsgGovSubmitProposal.pkl.go deleted file mode 100644 index c33b589b6..000000000 --- a/internal/orm/transactions/MsgGovSubmitProposal.pkl.go +++ /dev/null @@ -1,45 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgGovSubmitProposal interface { - Msg - - GetContent() *Proposal - - GetInitialDeposit() []*pkl.Object - - GetProposer() string -} - -var _ MsgGovSubmitProposal = (*MsgGovSubmitProposalImpl)(nil) - -// Gov module messages -type MsgGovSubmitProposalImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Content *Proposal `pkl:"content"` - - InitialDeposit []*pkl.Object `pkl:"initialDeposit"` - - Proposer string `pkl:"proposer"` -} - -// The type URL for the message -func (rcv *MsgGovSubmitProposalImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGovSubmitProposalImpl) GetContent() *Proposal { - return rcv.Content -} - -func (rcv *MsgGovSubmitProposalImpl) GetInitialDeposit() []*pkl.Object { - return rcv.InitialDeposit -} - -func (rcv *MsgGovSubmitProposalImpl) GetProposer() string { - return rcv.Proposer -} diff --git a/internal/orm/transactions/MsgGovVote.pkl.go b/internal/orm/transactions/MsgGovVote.pkl.go deleted file mode 100644 index 303cf1eee..000000000 --- a/internal/orm/transactions/MsgGovVote.pkl.go +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -type MsgGovVote interface { - Msg - - GetProposalId() int - - GetVoter() string - - GetOption() int -} - -var _ MsgGovVote = (*MsgGovVoteImpl)(nil) - -type MsgGovVoteImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - ProposalId int `pkl:"proposalId"` - - Voter string `pkl:"voter"` - - Option int `pkl:"option"` -} - -// The type URL for the message -func (rcv *MsgGovVoteImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGovVoteImpl) GetProposalId() int { - return rcv.ProposalId -} - -func (rcv *MsgGovVoteImpl) GetVoter() string { - return rcv.Voter -} - -func (rcv *MsgGovVoteImpl) GetOption() int { - return rcv.Option -} diff --git a/internal/orm/transactions/MsgGroupCreateGroup.pkl.go b/internal/orm/transactions/MsgGroupCreateGroup.pkl.go deleted file mode 100644 index c5dafd6bd..000000000 --- a/internal/orm/transactions/MsgGroupCreateGroup.pkl.go +++ /dev/null @@ -1,45 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgGroupCreateGroup interface { - Msg - - GetAdmin() string - - GetMembers() []*pkl.Object - - GetMetadata() string -} - -var _ MsgGroupCreateGroup = (*MsgGroupCreateGroupImpl)(nil) - -// Group module messages -type MsgGroupCreateGroupImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Admin string `pkl:"admin"` - - Members []*pkl.Object `pkl:"members"` - - Metadata string `pkl:"metadata"` -} - -// The type URL for the message -func (rcv *MsgGroupCreateGroupImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGroupCreateGroupImpl) GetAdmin() string { - return rcv.Admin -} - -func (rcv *MsgGroupCreateGroupImpl) GetMembers() []*pkl.Object { - return rcv.Members -} - -func (rcv *MsgGroupCreateGroupImpl) GetMetadata() string { - return rcv.Metadata -} diff --git a/internal/orm/transactions/MsgGroupSubmitProposal.pkl.go b/internal/orm/transactions/MsgGroupSubmitProposal.pkl.go deleted file mode 100644 index c23f15391..000000000 --- a/internal/orm/transactions/MsgGroupSubmitProposal.pkl.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgGroupSubmitProposal interface { - Msg - - GetGroupPolicyAddress() string - - GetProposers() []string - - GetMetadata() string - - GetMessages() []*pkl.Object - - GetExec() int -} - -var _ MsgGroupSubmitProposal = (*MsgGroupSubmitProposalImpl)(nil) - -type MsgGroupSubmitProposalImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - GroupPolicyAddress string `pkl:"groupPolicyAddress"` - - Proposers []string `pkl:"proposers"` - - Metadata string `pkl:"metadata"` - - Messages []*pkl.Object `pkl:"messages"` - - Exec int `pkl:"exec"` -} - -// The type URL for the message -func (rcv *MsgGroupSubmitProposalImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGroupSubmitProposalImpl) GetGroupPolicyAddress() string { - return rcv.GroupPolicyAddress -} - -func (rcv *MsgGroupSubmitProposalImpl) GetProposers() []string { - return rcv.Proposers -} - -func (rcv *MsgGroupSubmitProposalImpl) GetMetadata() string { - return rcv.Metadata -} - -func (rcv *MsgGroupSubmitProposalImpl) GetMessages() []*pkl.Object { - return rcv.Messages -} - -func (rcv *MsgGroupSubmitProposalImpl) GetExec() int { - return rcv.Exec -} diff --git a/internal/orm/transactions/MsgGroupVote.pkl.go b/internal/orm/transactions/MsgGroupVote.pkl.go deleted file mode 100644 index a79ce6899..000000000 --- a/internal/orm/transactions/MsgGroupVote.pkl.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -type MsgGroupVote interface { - Msg - - GetProposalId() int - - GetVoter() string - - GetOption() int - - GetMetadata() string - - GetExec() int -} - -var _ MsgGroupVote = (*MsgGroupVoteImpl)(nil) - -type MsgGroupVoteImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - ProposalId int `pkl:"proposalId"` - - Voter string `pkl:"voter"` - - Option int `pkl:"option"` - - Metadata string `pkl:"metadata"` - - Exec int `pkl:"exec"` -} - -// The type URL for the message -func (rcv *MsgGroupVoteImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgGroupVoteImpl) GetProposalId() int { - return rcv.ProposalId -} - -func (rcv *MsgGroupVoteImpl) GetVoter() string { - return rcv.Voter -} - -func (rcv *MsgGroupVoteImpl) GetOption() int { - return rcv.Option -} - -func (rcv *MsgGroupVoteImpl) GetMetadata() string { - return rcv.Metadata -} - -func (rcv *MsgGroupVoteImpl) GetExec() int { - return rcv.Exec -} diff --git a/internal/orm/transactions/MsgStakingBeginRedelegate.pkl.go b/internal/orm/transactions/MsgStakingBeginRedelegate.pkl.go deleted file mode 100644 index 44a019af4..000000000 --- a/internal/orm/transactions/MsgStakingBeginRedelegate.pkl.go +++ /dev/null @@ -1,52 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgStakingBeginRedelegate interface { - Msg - - GetDelegatorAddress() string - - GetValidatorSrcAddress() string - - GetValidatorDstAddress() string - - GetAmount() *pkl.Object -} - -var _ MsgStakingBeginRedelegate = (*MsgStakingBeginRedelegateImpl)(nil) - -type MsgStakingBeginRedelegateImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - DelegatorAddress string `pkl:"delegatorAddress"` - - ValidatorSrcAddress string `pkl:"validatorSrcAddress"` - - ValidatorDstAddress string `pkl:"validatorDstAddress"` - - Amount *pkl.Object `pkl:"amount"` -} - -// The type URL for the message -func (rcv *MsgStakingBeginRedelegateImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgStakingBeginRedelegateImpl) GetDelegatorAddress() string { - return rcv.DelegatorAddress -} - -func (rcv *MsgStakingBeginRedelegateImpl) GetValidatorSrcAddress() string { - return rcv.ValidatorSrcAddress -} - -func (rcv *MsgStakingBeginRedelegateImpl) GetValidatorDstAddress() string { - return rcv.ValidatorDstAddress -} - -func (rcv *MsgStakingBeginRedelegateImpl) GetAmount() *pkl.Object { - return rcv.Amount -} diff --git a/internal/orm/transactions/MsgStakingCreateValidator.pkl.go b/internal/orm/transactions/MsgStakingCreateValidator.pkl.go deleted file mode 100644 index d904a71c6..000000000 --- a/internal/orm/transactions/MsgStakingCreateValidator.pkl.go +++ /dev/null @@ -1,77 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgStakingCreateValidator interface { - Msg - - GetDescription() *pkl.Object - - GetCommission() *pkl.Object - - GetMinSelfDelegation() string - - GetDelegatorAddress() string - - GetValidatorAddress() string - - GetPubkey() *pkl.Object - - GetValue() *pkl.Object -} - -var _ MsgStakingCreateValidator = (*MsgStakingCreateValidatorImpl)(nil) - -// Staking module messages -type MsgStakingCreateValidatorImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - Description *pkl.Object `pkl:"description"` - - Commission *pkl.Object `pkl:"commission"` - - MinSelfDelegation string `pkl:"minSelfDelegation"` - - DelegatorAddress string `pkl:"delegatorAddress"` - - ValidatorAddress string `pkl:"validatorAddress"` - - Pubkey *pkl.Object `pkl:"pubkey"` - - Value *pkl.Object `pkl:"value"` -} - -// The type URL for the message -func (rcv *MsgStakingCreateValidatorImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgStakingCreateValidatorImpl) GetDescription() *pkl.Object { - return rcv.Description -} - -func (rcv *MsgStakingCreateValidatorImpl) GetCommission() *pkl.Object { - return rcv.Commission -} - -func (rcv *MsgStakingCreateValidatorImpl) GetMinSelfDelegation() string { - return rcv.MinSelfDelegation -} - -func (rcv *MsgStakingCreateValidatorImpl) GetDelegatorAddress() string { - return rcv.DelegatorAddress -} - -func (rcv *MsgStakingCreateValidatorImpl) GetValidatorAddress() string { - return rcv.ValidatorAddress -} - -func (rcv *MsgStakingCreateValidatorImpl) GetPubkey() *pkl.Object { - return rcv.Pubkey -} - -func (rcv *MsgStakingCreateValidatorImpl) GetValue() *pkl.Object { - return rcv.Value -} diff --git a/internal/orm/transactions/MsgStakingDelegate.pkl.go b/internal/orm/transactions/MsgStakingDelegate.pkl.go deleted file mode 100644 index 9dd6fa824..000000000 --- a/internal/orm/transactions/MsgStakingDelegate.pkl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgStakingDelegate interface { - Msg - - GetDelegatorAddress() string - - GetValidatorAddress() string - - GetAmount() *pkl.Object -} - -var _ MsgStakingDelegate = (*MsgStakingDelegateImpl)(nil) - -type MsgStakingDelegateImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - DelegatorAddress string `pkl:"delegatorAddress"` - - ValidatorAddress string `pkl:"validatorAddress"` - - Amount *pkl.Object `pkl:"amount"` -} - -// The type URL for the message -func (rcv *MsgStakingDelegateImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgStakingDelegateImpl) GetDelegatorAddress() string { - return rcv.DelegatorAddress -} - -func (rcv *MsgStakingDelegateImpl) GetValidatorAddress() string { - return rcv.ValidatorAddress -} - -func (rcv *MsgStakingDelegateImpl) GetAmount() *pkl.Object { - return rcv.Amount -} diff --git a/internal/orm/transactions/MsgStakingUndelegate.pkl.go b/internal/orm/transactions/MsgStakingUndelegate.pkl.go deleted file mode 100644 index ffc2395e6..000000000 --- a/internal/orm/transactions/MsgStakingUndelegate.pkl.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -type MsgStakingUndelegate interface { - Msg - - GetDelegatorAddress() string - - GetValidatorAddress() string - - GetAmount() *pkl.Object -} - -var _ MsgStakingUndelegate = (*MsgStakingUndelegateImpl)(nil) - -type MsgStakingUndelegateImpl struct { - // The type URL for the message - TypeUrl string `pkl:"typeUrl"` - - DelegatorAddress string `pkl:"delegatorAddress"` - - ValidatorAddress string `pkl:"validatorAddress"` - - Amount *pkl.Object `pkl:"amount"` -} - -// The type URL for the message -func (rcv *MsgStakingUndelegateImpl) GetTypeUrl() string { - return rcv.TypeUrl -} - -func (rcv *MsgStakingUndelegateImpl) GetDelegatorAddress() string { - return rcv.DelegatorAddress -} - -func (rcv *MsgStakingUndelegateImpl) GetValidatorAddress() string { - return rcv.ValidatorAddress -} - -func (rcv *MsgStakingUndelegateImpl) GetAmount() *pkl.Object { - return rcv.Amount -} diff --git a/internal/orm/transactions/Proposal.pkl.go b/internal/orm/transactions/Proposal.pkl.go deleted file mode 100644 index 4a3e8bd62..000000000 --- a/internal/orm/transactions/Proposal.pkl.go +++ /dev/null @@ -1,11 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -// Base class for all proposals -type Proposal struct { - // The title of the proposal - Title string `pkl:"title"` - - // The description of the proposal - Description string `pkl:"description"` -} diff --git a/internal/orm/transactions/Transactions.pkl.go b/internal/orm/transactions/Transactions.pkl.go deleted file mode 100644 index 5a551b8c4..000000000 --- a/internal/orm/transactions/Transactions.pkl.go +++ /dev/null @@ -1,36 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import ( - "context" - - "github.com/apple/pkl-go/pkl" -) - -type Transactions struct { -} - -// LoadFromPath loads the pkl module at the given path and evaluates it into a Transactions -func LoadFromPath(ctx context.Context, path string) (ret *Transactions, err error) { - evaluator, err := pkl.NewEvaluator(ctx, pkl.PreconfiguredOptions) - if err != nil { - return nil, err - } - defer func() { - cerr := evaluator.Close() - if err == nil { - err = cerr - } - }() - ret, err = Load(ctx, evaluator, pkl.FileSource(path)) - return ret, err -} - -// Load loads the pkl module at the given source and evaluates it with the given evaluator into a Transactions -func Load(ctx context.Context, evaluator pkl.Evaluator, source *pkl.ModuleSource) (*Transactions, error) { - var ret Transactions - if err := evaluator.EvaluateModule(ctx, source, &ret); err != nil { - return nil, err - } - return &ret, nil -} diff --git a/internal/orm/transactions/TxBody.pkl.go b/internal/orm/transactions/TxBody.pkl.go deleted file mode 100644 index 8a8c23263..000000000 --- a/internal/orm/transactions/TxBody.pkl.go +++ /dev/null @@ -1,17 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -// Represents a transaction body -type TxBody struct { - Messages []Msg `pkl:"messages"` - - Memo *string `pkl:"memo"` - - TimeoutHeight *int `pkl:"timeoutHeight"` - - ExtensionOptions *[]*pkl.Object `pkl:"extensionOptions"` - - NonCriticalExtensionOptions *[]*pkl.Object `pkl:"nonCriticalExtensionOptions"` -} diff --git a/internal/orm/transactions/init.pkl.go b/internal/orm/transactions/init.pkl.go deleted file mode 100644 index 211bc2e21..000000000 --- a/internal/orm/transactions/init.pkl.go +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated from Pkl module `transactions`. DO NOT EDIT. -package transactions - -import "github.com/apple/pkl-go/pkl" - -func init() { - pkl.RegisterMapping("transactions", Transactions{}) - pkl.RegisterMapping("transactions#Proposal", Proposal{}) - pkl.RegisterMapping("transactions#MsgGovSubmitProposal", MsgGovSubmitProposalImpl{}) - pkl.RegisterMapping("transactions#MsgGovVote", MsgGovVoteImpl{}) - pkl.RegisterMapping("transactions#MsgGovDeposit", MsgGovDepositImpl{}) - pkl.RegisterMapping("transactions#MsgGroupCreateGroup", MsgGroupCreateGroupImpl{}) - pkl.RegisterMapping("transactions#MsgGroupSubmitProposal", MsgGroupSubmitProposalImpl{}) - pkl.RegisterMapping("transactions#MsgGroupVote", MsgGroupVoteImpl{}) - pkl.RegisterMapping("transactions#MsgStakingCreateValidator", MsgStakingCreateValidatorImpl{}) - pkl.RegisterMapping("transactions#MsgStakingDelegate", MsgStakingDelegateImpl{}) - pkl.RegisterMapping("transactions#MsgStakingUndelegate", MsgStakingUndelegateImpl{}) - pkl.RegisterMapping("transactions#MsgStakingBeginRedelegate", MsgStakingBeginRedelegateImpl{}) - pkl.RegisterMapping("transactions#MsgDidUpdateParams", MsgDidUpdateParamsImpl{}) - pkl.RegisterMapping("transactions#MsgDidAllocateVault", MsgDidAllocateVaultImpl{}) - pkl.RegisterMapping("transactions#MsgDidProveWitness", MsgDidProveWitnessImpl{}) - pkl.RegisterMapping("transactions#MsgDidSyncVault", MsgDidSyncVaultImpl{}) - pkl.RegisterMapping("transactions#MsgDidRegisterController", MsgDidRegisterControllerImpl{}) - pkl.RegisterMapping("transactions#MsgDidAuthorize", MsgDidAuthorizeImpl{}) - pkl.RegisterMapping("transactions#MsgDidRegisterService", MsgDidRegisterServiceImpl{}) - pkl.RegisterMapping("transactions#TxBody", TxBody{}) -} diff --git a/nebula/README.md b/nebula/README.md new file mode 100644 index 000000000..52772822e --- /dev/null +++ b/nebula/README.md @@ -0,0 +1,3 @@ +# Nebula + +A Templ component library for the Sonr DWN (Decentralized Web Node) client. diff --git a/pkg/nebula/blocks/alert.templ b/nebula/blocks/alert.templ similarity index 100% rename from pkg/nebula/blocks/alert.templ rename to nebula/blocks/alert.templ diff --git a/pkg/nebula/blocks/alert_templ.go b/nebula/blocks/alert_templ.go similarity index 96% rename from pkg/nebula/blocks/alert_templ.go rename to nebula/blocks/alert_templ.go index 9b00895d4..dee2fc99b 100644 --- a/pkg/nebula/blocks/alert_templ.go +++ b/nebula/blocks/alert_templ.go @@ -56,7 +56,7 @@ func alertElement(attrs templ.Attributes, title, message string, icon templ.Comp var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/alert.templ`, Line: 10, Col: 66} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/alert.templ`, Line: 10, Col: 66} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -69,7 +69,7 @@ func alertElement(attrs templ.Attributes, title, message string, icon templ.Comp var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(message) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/alert.templ`, Line: 11, Col: 43} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/alert.templ`, Line: 11, Col: 43} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/badge.templ b/nebula/blocks/badge.templ similarity index 100% rename from pkg/nebula/blocks/badge.templ rename to nebula/blocks/badge.templ diff --git a/pkg/nebula/blocks/badge_templ.go b/nebula/blocks/badge_templ.go similarity index 100% rename from pkg/nebula/blocks/badge_templ.go rename to nebula/blocks/badge_templ.go diff --git a/pkg/nebula/blocks/blocks.go b/nebula/blocks/blocks.go similarity index 100% rename from pkg/nebula/blocks/blocks.go rename to nebula/blocks/blocks.go diff --git a/pkg/nebula/blocks/button.templ b/nebula/blocks/button.templ similarity index 100% rename from pkg/nebula/blocks/button.templ rename to nebula/blocks/button.templ diff --git a/pkg/nebula/blocks/button_templ.go b/nebula/blocks/button_templ.go similarity index 94% rename from pkg/nebula/blocks/button_templ.go rename to nebula/blocks/button_templ.go index e5dd0aade..e4911b7a9 100644 --- a/pkg/nebula/blocks/button_templ.go +++ b/nebula/blocks/button_templ.go @@ -157,7 +157,7 @@ func renderHxGetButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxGet) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 86, Col: 25} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 86, Col: 25} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -170,7 +170,7 @@ func renderHxGetButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxTarget) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 86, Col: 69} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 86, Col: 69} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { @@ -183,7 +183,7 @@ func renderHxGetButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var5 string templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxTrigger) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 86, Col: 96} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 86, Col: 96} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -196,7 +196,7 @@ func renderHxGetButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var6 string templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxSwap) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 86, Col: 117} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 86, Col: 117} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) if templ_7745c5c3_Err != nil { @@ -254,7 +254,7 @@ func renderHxPostButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxPost) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 92, Col: 27} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 92, Col: 27} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -267,7 +267,7 @@ func renderHxPostButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxTarget) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 92, Col: 52} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 92, Col: 52} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -280,7 +280,7 @@ func renderHxPostButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxTrigger) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 92, Col: 79} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 92, Col: 79} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -293,7 +293,7 @@ func renderHxPostButton(c *button, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var11 string templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(c.hxSwap) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/button.templ`, Line: 92, Col: 100} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/button.templ`, Line: 92, Col: 100} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/card.templ b/nebula/blocks/card.templ similarity index 100% rename from pkg/nebula/blocks/card.templ rename to nebula/blocks/card.templ diff --git a/pkg/nebula/blocks/card_templ.go b/nebula/blocks/card_templ.go similarity index 98% rename from pkg/nebula/blocks/card_templ.go rename to nebula/blocks/card_templ.go index 686fd68a9..d3a390579 100644 --- a/pkg/nebula/blocks/card_templ.go +++ b/nebula/blocks/card_templ.go @@ -40,7 +40,7 @@ func renderCard(id string, attrs templ.Attributes) templ.Component { var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(id) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/card.templ`, Line: 8, Col: 13} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/card.templ`, Line: 8, Col: 13} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/fonts.templ b/nebula/blocks/fonts.templ similarity index 100% rename from pkg/nebula/blocks/fonts.templ rename to nebula/blocks/fonts.templ diff --git a/pkg/nebula/blocks/fonts_templ.go b/nebula/blocks/fonts_templ.go similarity index 92% rename from pkg/nebula/blocks/fonts_templ.go rename to nebula/blocks/fonts_templ.go index 8141bc7c2..9a2c2ef29 100644 --- a/pkg/nebula/blocks/fonts_templ.go +++ b/nebula/blocks/fonts_templ.go @@ -54,7 +54,7 @@ func renderText(level int, text string) templ.Component { var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 23, Col: 10} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 23, Col: 10} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -72,7 +72,7 @@ func renderText(level int, text string) templ.Component { var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 27, Col: 10} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 27, Col: 10} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -90,7 +90,7 @@ func renderText(level int, text string) templ.Component { var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 31, Col: 10} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 31, Col: 10} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { @@ -108,7 +108,7 @@ func renderText(level int, text string) templ.Component { var templ_7745c5c3_Var5 string templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 35, Col: 10} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 35, Col: 10} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -159,7 +159,7 @@ func renderLink(attrs templ.Attributes, text string) templ.Component { var templ_7745c5c3_Var7 string templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 42, Col: 8} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 42, Col: 8} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) if templ_7745c5c3_Err != nil { @@ -209,7 +209,7 @@ func renderStrong(attrs templ.Attributes, text string) templ.Component { var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 48, Col: 8} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 48, Col: 8} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -259,7 +259,7 @@ func renderEmphasis(attrs templ.Attributes, text string) templ.Component { var templ_7745c5c3_Var11 string templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 54, Col: 8} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 54, Col: 8} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { @@ -309,7 +309,7 @@ func renderCode(attrs templ.Attributes, text string) templ.Component { var templ_7745c5c3_Var13 string templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(text) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/fonts.templ`, Line: 60, Col: 8} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/fonts.templ`, Line: 60, Col: 8} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/global.templ b/nebula/blocks/global.templ similarity index 100% rename from pkg/nebula/blocks/global.templ rename to nebula/blocks/global.templ diff --git a/pkg/nebula/blocks/global_templ.go b/nebula/blocks/global_templ.go similarity index 100% rename from pkg/nebula/blocks/global_templ.go rename to nebula/blocks/global_templ.go diff --git a/pkg/nebula/blocks/icons.templ b/nebula/blocks/icons.templ similarity index 100% rename from pkg/nebula/blocks/icons.templ rename to nebula/blocks/icons.templ diff --git a/pkg/nebula/blocks/icons_templ.go b/nebula/blocks/icons_templ.go similarity index 100% rename from pkg/nebula/blocks/icons_templ.go rename to nebula/blocks/icons_templ.go diff --git a/pkg/nebula/blocks/inputs.templ b/nebula/blocks/inputs.templ similarity index 100% rename from pkg/nebula/blocks/inputs.templ rename to nebula/blocks/inputs.templ diff --git a/pkg/nebula/blocks/inputs_templ.go b/nebula/blocks/inputs_templ.go similarity index 93% rename from pkg/nebula/blocks/inputs_templ.go rename to nebula/blocks/inputs_templ.go index 7938e89cc..e29a695a0 100644 --- a/pkg/nebula/blocks/inputs_templ.go +++ b/nebula/blocks/inputs_templ.go @@ -46,7 +46,7 @@ func TextInput(state InputState, label string, placeholder string) templ.Compone var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/inputs.templ`, Line: 15, Col: 128} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/inputs.templ`, Line: 15, Col: 128} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -64,7 +64,7 @@ func TextInput(state InputState, label string, placeholder string) templ.Compone var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/inputs.templ`, Line: 20, Col: 128} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/inputs.templ`, Line: 20, Col: 128} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -82,7 +82,7 @@ func TextInput(state InputState, label string, placeholder string) templ.Compone var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(label) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/inputs.templ`, Line: 25, Col: 128} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/inputs.templ`, Line: 25, Col: 128} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/panel.templ b/nebula/blocks/panel.templ similarity index 100% rename from pkg/nebula/blocks/panel.templ rename to nebula/blocks/panel.templ diff --git a/pkg/nebula/blocks/panel_templ.go b/nebula/blocks/panel_templ.go similarity index 97% rename from pkg/nebula/blocks/panel_templ.go rename to nebula/blocks/panel_templ.go index 39b623cbe..d6c417bfa 100644 --- a/pkg/nebula/blocks/panel_templ.go +++ b/nebula/blocks/panel_templ.go @@ -100,7 +100,7 @@ func breadcrumbItem(title string, active bool) templ.Component { var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/panel.templ`, Line: 25, Col: 126} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/panel.templ`, Line: 25, Col: 126} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -118,7 +118,7 @@ func breadcrumbItem(title string, active bool) templ.Component { var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `pkg/nebula/blocks/panel.templ`, Line: 27, Col: 118} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `nebula/blocks/panel.templ`, Line: 27, Col: 118} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { diff --git a/pkg/nebula/blocks/radios.templ b/nebula/blocks/radios.templ similarity index 100% rename from pkg/nebula/blocks/radios.templ rename to nebula/blocks/radios.templ diff --git a/pkg/nebula/blocks/radios_templ.go b/nebula/blocks/radios_templ.go similarity index 100% rename from pkg/nebula/blocks/radios_templ.go rename to nebula/blocks/radios_templ.go diff --git a/pkg/nebula/blocks/sizes.templ b/nebula/blocks/sizes.templ similarity index 100% rename from pkg/nebula/blocks/sizes.templ rename to nebula/blocks/sizes.templ diff --git a/pkg/nebula/blocks/sizes_templ.go b/nebula/blocks/sizes_templ.go similarity index 100% rename from pkg/nebula/blocks/sizes_templ.go rename to nebula/blocks/sizes_templ.go diff --git a/pkg/nebula/blocks/tabs.templ b/nebula/blocks/tabs.templ similarity index 100% rename from pkg/nebula/blocks/tabs.templ rename to nebula/blocks/tabs.templ diff --git a/pkg/nebula/blocks/tabs_templ.go b/nebula/blocks/tabs_templ.go similarity index 100% rename from pkg/nebula/blocks/tabs_templ.go rename to nebula/blocks/tabs_templ.go diff --git a/nebula/devbox.json b/nebula/devbox.json new file mode 100644 index 000000000..916674a6a --- /dev/null +++ b/nebula/devbox.json @@ -0,0 +1,24 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.12.0/.schema/devbox.schema.json", + "packages": [ + "bun@latest" + ], + "env": { + "CLOUDFLARE_API_TOKEN": "$CLOUDFLARE_API_TOKEN", + "GOPATH": "$HOME/go", + "PATH": "$HOME/go/bin:$PATH", + "TEMPL_EXPERIMENT": "rawgo", + "CHAIN_ID": "sonr-testnet-1", + "DENOM": "usnr", + "KEYRING": "test", + "MONIKER": "florence", + "ENV": "$ENVIRONMENT" + }, + "shell": { + "scripts": { + "build": [ + "make build" + ] + } + } +} diff --git a/nebula/nebula.go b/nebula/nebula.go new file mode 100644 index 000000000..2808317c2 --- /dev/null +++ b/nebula/nebula.go @@ -0,0 +1 @@ +package nebula diff --git a/pkg/nebula/pages/home.templ b/nebula/pages/home.templ similarity index 93% rename from pkg/nebula/pages/home.templ rename to nebula/pages/home.templ index d5d0f2a93..f9c31302a 100644 --- a/pkg/nebula/pages/home.templ +++ b/nebula/pages/home.templ @@ -2,7 +2,7 @@ package pages import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Home(c echo.Context) error { diff --git a/pkg/nebula/pages/home_templ.go b/nebula/pages/home_templ.go similarity index 99% rename from pkg/nebula/pages/home_templ.go rename to nebula/pages/home_templ.go index 8b438f4d6..f00d95bb0 100644 --- a/pkg/nebula/pages/home_templ.go +++ b/nebula/pages/home_templ.go @@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Home(c echo.Context) error { diff --git a/pkg/nebula/pages/login.templ b/nebula/pages/login.templ similarity index 90% rename from pkg/nebula/pages/login.templ rename to nebula/pages/login.templ index 9374f1a84..68f8b2e18 100644 --- a/pkg/nebula/pages/login.templ +++ b/nebula/pages/login.templ @@ -2,7 +2,7 @@ package pages import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Login(c echo.Context) error { diff --git a/pkg/nebula/pages/login_templ.go b/nebula/pages/login_templ.go similarity index 99% rename from pkg/nebula/pages/login_templ.go rename to nebula/pages/login_templ.go index ae48b92d8..696b731c2 100644 --- a/pkg/nebula/pages/login_templ.go +++ b/nebula/pages/login_templ.go @@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Login(c echo.Context) error { diff --git a/pkg/nebula/pages/openid.templ b/nebula/pages/openid.templ similarity index 87% rename from pkg/nebula/pages/openid.templ rename to nebula/pages/openid.templ index 9120e3724..2d1a677c4 100644 --- a/pkg/nebula/pages/openid.templ +++ b/nebula/pages/openid.templ @@ -2,7 +2,7 @@ package pages import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Authorize(c echo.Context) error { diff --git a/pkg/nebula/pages/openid_templ.go b/nebula/pages/openid_templ.go similarity index 98% rename from pkg/nebula/pages/openid_templ.go rename to nebula/pages/openid_templ.go index aeaa16d34..c1df7f246 100644 --- a/pkg/nebula/pages/openid_templ.go +++ b/nebula/pages/openid_templ.go @@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Authorize(c echo.Context) error { diff --git a/pkg/nebula/pages/pages.go b/nebula/pages/pages.go similarity index 100% rename from pkg/nebula/pages/pages.go rename to nebula/pages/pages.go diff --git a/pkg/nebula/pages/profile.templ b/nebula/pages/profile.templ similarity index 85% rename from pkg/nebula/pages/profile.templ rename to nebula/pages/profile.templ index 1abca0e8d..97af91f61 100644 --- a/pkg/nebula/pages/profile.templ +++ b/nebula/pages/profile.templ @@ -2,7 +2,7 @@ package pages import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Profile(c echo.Context) error { diff --git a/pkg/nebula/pages/profile_templ.go b/nebula/pages/profile_templ.go similarity index 98% rename from pkg/nebula/pages/profile_templ.go rename to nebula/pages/profile_templ.go index c4f4a6a2d..7d5f4aead 100644 --- a/pkg/nebula/pages/profile_templ.go +++ b/nebula/pages/profile_templ.go @@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) func Profile(c echo.Context) error { diff --git a/pkg/nebula/pages/register.templ b/nebula/pages/register.templ similarity index 97% rename from pkg/nebula/pages/register.templ rename to nebula/pages/register.templ index 6f4ef0bf0..6ecbad47b 100644 --- a/pkg/nebula/pages/register.templ +++ b/nebula/pages/register.templ @@ -2,7 +2,7 @@ package pages import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) type FormState string diff --git a/pkg/nebula/pages/register_templ.go b/nebula/pages/register_templ.go similarity index 99% rename from pkg/nebula/pages/register_templ.go rename to nebula/pages/register_templ.go index dabc8bcd5..568a22d0c 100644 --- a/pkg/nebula/pages/register_templ.go +++ b/nebula/pages/register_templ.go @@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime" import ( "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" + "github.com/onsonr/sonr/nebula/blocks" ) type FormState string diff --git a/pkg/nebula/nebula.go b/pkg/nebula/nebula.go deleted file mode 100644 index a3237757b..000000000 --- a/pkg/nebula/nebula.go +++ /dev/null @@ -1,14 +0,0 @@ -package nebula - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/pages" -) - -func RegisterHandlers(e *echo.Echo) { - e.GET("/home", pages.Home) - e.GET("/login", pages.Login) - e.GET("/register", pages.Register) - e.GET("/profile", pages.Profile) - e.GET("/authorize", pages.Authorize) -} diff --git a/pkg/nebula/view.go b/pkg/nebula/view.go deleted file mode 100644 index fe72ad483..000000000 --- a/pkg/nebula/view.go +++ /dev/null @@ -1,27 +0,0 @@ -package nebula - -import ( - "bytes" - - "github.com/a-h/templ" - "github.com/labstack/echo/v4" -) - -func Render(cmp templ.Component) echo.HandlerFunc { - return func(c echo.Context) error { - // Create a buffer to store the rendered HTML - buf := &bytes.Buffer{} - // Render the component to the buffer - err := cmp.Render(c.Request().Context(), buf) - if err != nil { - return err - } - - // Set the content type - c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML) - - // Write the buffered content to the response - _, err = c.Response().Write(buf.Bytes()) - return err - } -} diff --git a/pkg/proxy/README.md b/pkg/proxy/README.md deleted file mode 100644 index 10ca30fcc..000000000 --- a/pkg/proxy/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# sonr.id - -A public decentralized web node client for the Sonr Network. - -## Development - -### Prerequisites - -- Bun -- Devbox -- Docker - -### Setup - -1. Install [Devbox](https://github.com/jetpack-io/devbox) -2. Install [Bun](https://bun.sh/docs/installation) -3. Install [Docker](https://docs.docker.com/get-docker/) -4. Run `devbox run dev` diff --git a/pkg/proxy/main.go b/pkg/proxy/main.go deleted file mode 100644 index dacf6f1a3..000000000 --- a/pkg/proxy/main.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build wasm - -package main - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/proxy/routes" - "github.com/syumai/workers" -) - -// # Sonr.ID -// -// This App is used as an IPFS gateway proxy for exissting Sonr DWN nodes -func main() { - // TODO: Route from /ipfs/cid and /ipns/did to the gateway - // 1. Display Generic Homepage - e := echo.New() - // Configure the server - e.GET("/", routes.HomeView) - e.GET("/allocate", routes.AllocateView) - // 2. Present Terms Agreement and Checkbox to Accept - // 3. Collect UserAgent, Set-Cookie, and Client Headers - // 4. Redirect to DWN Node - workers.Serve(e) -} diff --git a/pkg/proxy/routes/allocate.templ b/pkg/proxy/routes/allocate.templ deleted file mode 100644 index 71ccecbdf..000000000 --- a/pkg/proxy/routes/allocate.templ +++ /dev/null @@ -1,18 +0,0 @@ -package routes - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" -) - -func AllocateView(c echo.Context) error { - return echoComponentResponse(c, renderAuthorizeView()) -} - -templ renderAuthorizeView() { - @blocks.Card("authorize-view", blocks.SizeMedium) { - @blocks.H1("Sonr.ID") - @blocks.Text("Neo-tree is a file manager for NeoFS.") - } -} - diff --git a/pkg/proxy/routes/allocate_templ.go b/pkg/proxy/routes/allocate_templ.go deleted file mode 100644 index 66e703de1..000000000 --- a/pkg/proxy/routes/allocate_templ.go +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.2.778 -package routes - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" -) - -func AllocateView(c echo.Context) error { - return echoComponentResponse(c, renderAuthorizeView()) -} - -func renderAuthorizeView() templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = blocks.H1("Sonr.ID").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = blocks.Text("Neo-tree is a file manager for NeoFS.").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) - templ_7745c5c3_Err = blocks.Card("authorize-view", blocks.SizeMedium).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/pkg/proxy/routes/home.templ b/pkg/proxy/routes/home.templ deleted file mode 100644 index c9c927bff..000000000 --- a/pkg/proxy/routes/home.templ +++ /dev/null @@ -1,28 +0,0 @@ -package routes - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" -) - -func HomeView(c echo.Context) error { - return echoComponentResponse(c, renderHomeView()) -} - -templ renderHomeView() { - @blocks.Card("home-view", blocks.SizeLarge) { - @blocks.H1("Sonr.ID") - @blocks.Text("A Decentralized Web Node Client for the Sonr Network.") - @blocks.Spacer() -
- @blocks.Button(blocks.GET("/register", "#home-view"), blocks.PrimaryButtonStyle()) { - @blocks.Text("Get Started") - } - @blocks.Button(blocks.GET("/login", "#home-view")) { - @blocks.Text("Login") - } -
- @blocks.PoweredBySonr() - } -} - diff --git a/pkg/proxy/routes/home_templ.go b/pkg/proxy/routes/home_templ.go deleted file mode 100644 index deeb75b60..000000000 --- a/pkg/proxy/routes/home_templ.go +++ /dev/null @@ -1,139 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.2.778 -package routes - -//lint:file-ignore SA4006 This context is only used if a nested component is present. - -import "github.com/a-h/templ" -import templruntime "github.com/a-h/templ/runtime" - -import ( - "github.com/labstack/echo/v4" - "github.com/onsonr/sonr/pkg/nebula/blocks" -) - -func HomeView(c echo.Context) error { - return echoComponentResponse(c, renderHomeView()) -} - -func renderHomeView() templ.Component { - return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { - return templ_7745c5c3_CtxErr - } - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var1 := templ.GetChildren(ctx) - if templ_7745c5c3_Var1 == nil { - templ_7745c5c3_Var1 = templ.NopComponent - } - ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = blocks.H1("Sonr.ID").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = blocks.Text("A Decentralized Web Node Client for the Sonr Network.").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = blocks.Spacer().Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var3 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = blocks.Text("Get Started").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) - templ_7745c5c3_Err = blocks.Button(blocks.GET("/register", "#home-view"), blocks.PrimaryButtonStyle()).Render(templ.WithChildren(ctx, templ_7745c5c3_Var3), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Var4 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { - templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context - templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) - if !templ_7745c5c3_IsBuffer { - defer func() { - templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) - if templ_7745c5c3_Err == nil { - templ_7745c5c3_Err = templ_7745c5c3_BufErr - } - }() - } - ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Err = blocks.Text("Login").Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) - templ_7745c5c3_Err = blocks.Button(blocks.GET("/login", "#home-view")).Render(templ.WithChildren(ctx, templ_7745c5c3_Var4), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - templ_7745c5c3_Err = blocks.PoweredBySonr().Render(ctx, templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) - templ_7745c5c3_Err = blocks.Card("home-view", blocks.SizeLarge).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) - if templ_7745c5c3_Err != nil { - return templ_7745c5c3_Err - } - return templ_7745c5c3_Err - }) -} - -var _ = templruntime.GeneratedTemplate diff --git a/pkg/proxy/routes/pages.go b/pkg/proxy/routes/pages.go deleted file mode 100644 index 49aeacfce..000000000 --- a/pkg/proxy/routes/pages.go +++ /dev/null @@ -1,27 +0,0 @@ -package routes - -import ( - "bytes" - - "github.com/a-h/templ" - "github.com/labstack/echo/v4" -) - -// render renders a templ.Component -func echoComponentResponse(c echo.Context, cmp templ.Component) error { - // Create a buffer to store the rendered HTML - buf := &bytes.Buffer{} - - // Render the component to the buffer - err := cmp.Render(c.Request().Context(), buf) - if err != nil { - return err - } - - // Set the content type - c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML) - - // Write the buffered content to the response - _, err = c.Response().Write(buf.Bytes()) - return err -} diff --git a/pkg/proxy/wrangler.toml b/pkg/proxy/wrangler.toml deleted file mode 100644 index 959f185c1..000000000 --- a/pkg/proxy/wrangler.toml +++ /dev/null @@ -1,9 +0,0 @@ -name = "sonr-id" -main = "./build/worker.mjs" -compatibility_date = "2024-07-26" - -[dev] -ip = "localhost" - -[build] -command = "devbox run build:motr" diff --git a/pkg/vault/vault.go b/pkg/vault/vault.go deleted file mode 100644 index 1260bd682..000000000 --- a/pkg/vault/vault.go +++ /dev/null @@ -1,61 +0,0 @@ -package vault - -import ( - "github.com/cosmos/cosmos-sdk/types/bech32" - "github.com/ipfs/boxo/files" - "github.com/onsonr/crypto/mpc" - "github.com/onsonr/sonr/config/dwn" -) - -type SchemaVersion = int - -var CurrentSchemaVersion SchemaVersion = 1 - -type Vault struct { - FS files.Node - ValKs mpc.Share -} - -func New(subject string, origin string, chainID string) (*Vault, error) { - shares, err := mpc.GenerateKeyshares() - var ( - valKs = shares[0] - usrKs = shares[1] - ) - usrKsJSON, err := usrKs.Marshal() - if err != nil { - return nil, err - } - - sonrAddr, err := bech32.ConvertAndEncode("idx", valKs.GetPublicKey()) - if err != nil { - return nil, err - } - - cnfg := NewConfig(usrKsJSON, sonrAddr, chainID, DefaultSchema()) - - fileMap, err := NewVaultDirectory(cnfg) - if err != nil { - return nil, err - } - - return &Vault{ - FS: fileMap, - ValKs: valKs, - }, nil -} - -func DefaultSchema() *dwn.Schema { - return &dwn.Schema{ - Version: CurrentSchemaVersion, - Account: "++, id, name, address, publicKey, chainCode, index, controller, createdAt", - Asset: "++, id, name, symbol, decimals, chainCode, createdAt", - Chain: "++, id, name, networkId, chainCode, createdAt", - Credential: "++, id, subject, controller, attestationType, origin, label, deviceId, credentialId, publicKey, transport, signCount, userPresent, userVerified, backupEligible, backupState, cloneWarning, createdAt, updatedAt", - Jwk: "++, kty, crv, x, y, n, e", - Grant: "++, subject, controller, origin, token, scopes, createdAt, updatedAt", - Keyshare: "++, id, data, role, createdAt, lastRefreshed", - PublicKey: "++, role, algorithm, encoding, curve, key_type, raw, jwk", - Profile: "++, id, subject, controller, originUri, publicMetadata, privateMetadata, createdAt, updatedAt", - } -} diff --git a/proto/buf.yaml b/proto/buf.yaml index 6301a3b3f..c4f0b5ffa 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -10,9 +10,12 @@ lint: - DEFAULT - COMMENTS - FILE_LOWER_SNAKE_CASE - except: + ignore: - UNARY_RPC - COMMENT_FIELD - SERVICE_SUFFIX - PACKAGE_VERSION_SUFFIX - RPC_REQUEST_STANDARD_NAME + - FILE_OPTIONS_REQUIRE_GO_PACKAGE + - FILE_OPTIONS_REQUIRE_GO_PACKAGE + - PACKAGE_VERSION_SUFFIX diff --git a/proto/did/v1/genesis.proto b/proto/did/v1/genesis.proto index 65e92ed09..636ca6043 100644 --- a/proto/did/v1/genesis.proto +++ b/proto/did/v1/genesis.proto @@ -24,17 +24,11 @@ message Params { // Whitelisted Key Types map allowed_public_keys = 2; - // IpfsActive is a flag to enable/disable ipfs - bool ipfs_active = 3; - - // Localhost Registration Enabled - bool localhost_registration_enabled = 4; - // ConveyancePreference defines the conveyance preference - string conveyance_preference = 5; + string conveyance_preference = 3; // AttestationFormats defines the attestation formats - repeated string attestation_formats = 6; + repeated string attestation_formats = 4; } // AssetInfo defines the asset info @@ -74,7 +68,8 @@ message KeyInfo { string role = 1; string algorithm = 2; // e.g., "ES256", "EdDSA", "ES256K" string encoding = 3; // e.g., "hex", "base64", "multibase" - string curve = 4; // e.g., "P256", "P384", "P521", "X25519", "X448", "Ed25519", "Ed448", "secp256k1" + string curve = 4; // e.g., "P256", "P384", "P521", "X25519", "X448", + // "Ed25519", "Ed448", "secp256k1" string type = 5; // e.g., "Octet", "Elliptic", "RSA", "Symmetric", "HMAC" } diff --git a/proto/did/v1/query.proto b/proto/did/v1/query.proto index b7a743b3e..c869dd38d 100644 --- a/proto/did/v1/query.proto +++ b/proto/did/v1/query.proto @@ -17,11 +17,6 @@ service Query { rpc Resolve(QueryRequest) returns (QueryResolveResponse) { option (google.api.http).get = "/did/{did}"; } - - // Sync queries the DID document by its id. And returns the required PKL information - rpc Sync(SyncRequest) returns (SyncResponse) { - option (google.api.http).post = "/sync"; - } } // Queryequest is the request type for the Query/Params RPC method. @@ -32,14 +27,6 @@ message QueryRequest { string asset = 4; } -// QueryResolveResponse is the response type for the Query/Resolve RPC method. -message QueryResponse { - bool success = 1; - string query = 2; - Document document = 3; - Params params = 5; -} - // QueryParamsResponse is the response type for the Query/Params RPC method. message QueryParamsResponse { // params defines the parameters of the module. @@ -51,13 +38,3 @@ message QueryResolveResponse { // document is the DID document Document document = 1; } - -// SyncRequest is the request type for the Sync RPC method. -message SyncRequest { - string did = 1; -} - -// SyncResponse is the response type for the Sync RPC method. -message SyncResponse { - bool success = 1; -} diff --git a/proto/did/v1/state.proto b/proto/did/v1/state.proto index 4c40b7627..c66e8716b 100644 --- a/proto/did/v1/state.proto +++ b/proto/did/v1/state.proto @@ -33,7 +33,10 @@ message Alias { message Controller { option (cosmos.orm.v1.table) = { id: 2 - primary_key: {fields: "id"} + primary_key: { + fields: "number" + auto_increment: true + } index: { id: 1 fields: "sonr_address" @@ -51,49 +54,41 @@ message Controller { } index: { id: 4 - fields: "vault_cid" - unique: true - } - index: { - id: 5 - fields: "status,vault_cid" + fields: "did" unique: true } }; // The unique identifier of the controller - string id = 1; + uint64 number = 1; + + // The unique identifier of the controller + string did = 2; // The DID of the controller - string sonr_address = 2; + string sonr_address = 3; // The DID of the controller - string eth_address = 3; + string eth_address = 4; // The DID of the controller - string btc_address = 4; - - // Aliases of the controller - repeated string aliases = 5; + string btc_address = 5; // PubKey is the verification method - PubKey public_key = 6; + bytes public_key = 6; - // The vault address or identifier - string vault_cid = 7; - - // The Authentications of the controller - repeated string authentication = 8; + // Val Keyshare + string ks_val = 7; // The Status of the claims for the controller - string status = 9; + bool claimed = 8; } // Verification reprsents a method of verifying membership in a DID message Verification { option (cosmos.orm.v1.table) = { id: 4 - primary_key: {fields: "id"} + primary_key: {fields: "did"} index: { id: 1 fields: "issuer,subject" @@ -112,7 +107,7 @@ message Verification { }; // The unique identifier of the verification - string id = 1; + string did = 1; // The controller of the verification string controller = 2; @@ -129,6 +124,7 @@ message Verification { // The public key of the verification PubKey public_key = 6; - // The Verification Type (Authentication, Assertion, CapabilityDelegation, CapabilityInvocation) + // The Verification Type (Authentication, Assertion, CapabilityDelegation, + // CapabilityInvocation) string verification_type = 7; } diff --git a/proto/did/v1/tx.proto b/proto/did/v1/tx.proto index b242a37d8..b4fdd71f2 100644 --- a/proto/did/v1/tx.proto +++ b/proto/did/v1/tx.proto @@ -12,55 +12,27 @@ option go_package = "github.com/onsonr/sonr/x/did/types"; // Msg defines the Msg service. service Msg { option (cosmos.msg.v1.service) = true; - // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. - // this operation is called by services initiating a controller registration. - rpc AllocateVault(MsgAllocateVault) returns (MsgAllocateVaultResponse); - // AuthorizeService asserts the given controller is the owner of the given address. + // AuthorizeService asserts the given controller is the owner of the given + // address. rpc AuthorizeService(MsgAuthorizeService) returns (MsgAuthorizeServiceResponse); - // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages Macaroon for verification. + // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages + // Macaroon for verification. rpc ExecuteTx(MsgExecuteTx) returns (MsgExecuteTxResponse); - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + // RegisterController initializes a controller with the given authentication + // set, address, cid, publicKey, and user-defined alias. rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse); - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + // RegisterService initializes a Service with a given permission scope and + // URI. The domain must have a valid TXT record containing the public key. rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse); // UpdateParams defines a governance operation for updating the parameters. rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); } -// MsgAllocateVault is the message type for the AllocateVault RPC. -message MsgAllocateVault { - option (cosmos.msg.v1.signer) = "authority"; - - // authority is the address of the service account. - string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - - // subject is a unique human-defined identifier to associate with the vault. - string subject = 2; - - // origin is the origin of the request in wildcard form. - string origin = 3; -} - -// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. -message MsgAllocateVaultResponse { - // CID is the content identifier of the vault. - string cid = 1; - - // ExpiryBlock is the block number at which the vault will expire. - int64 expiry_block = 2; - - // RegistrationOptions is a json string of the PublicKeyCredentialCreationOptions for WebAuthn - string token = 3; - - // IsLocalhost is a flag to indicate if the vault is localhost - bool localhost = 4; -} - // MsgRegisterController is the message type for the InitializeController RPC. message MsgRegisterController { option (cosmos.msg.v1.signer) = "authority"; @@ -74,13 +46,16 @@ message MsgRegisterController { // Keyshares is the list of keyshares to initialize the controller with. repeated bytes keyshares = 3; - // Verifications is the list of verifications to initialize the controller with. + // Verifications is the list of verifications to initialize the controller + // with. repeated bytes verifications = 4; } -// MsgRegisterControllerResponse is the response type for the InitializeController RPC. +// MsgRegisterControllerResponse is the response type for the +// InitializeController RPC. message MsgRegisterControllerResponse { - // Success returns true if the specified cid is valid and not already encrypted. + // Success returns true if the specified cid is valid and not already + // encrypted. bool success = 1; // Controller is the address of the initialized controller. @@ -127,7 +102,8 @@ message MsgAuthorizeService { string token = 4; } -// MsgAuthorizeServiceResponse is the response type for the AuthorizeService RPC. +// MsgAuthorizeServiceResponse is the response type for the AuthorizeService +// RPC. message MsgAuthorizeServiceResponse { bool success = 1; string token = 2; @@ -140,7 +116,8 @@ message MsgRegisterService { // authority is the address of the governance account. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - // origin is the origin of the request in wildcard form. Requires valid TXT record in DNS. + // origin is the origin of the request in wildcard form. Requires valid TXT + // record in DNS. Service service = 2; } diff --git a/proto/vault/module/v1/module.proto b/proto/vault/module/v1/module.proto new file mode 100644 index 000000000..e23456c26 --- /dev/null +++ b/proto/vault/module/v1/module.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package vault.module.v1; + +import "cosmos/app/v1alpha1/module.proto"; + +// Module is the app config object of the module. +// Learn more: https://docs.cosmos.network/main/building-modules/depinject +message Module { + option (cosmos.app.v1alpha1.module) = { + go_import : "github.com/onsonr/sonr" + }; +} \ No newline at end of file diff --git a/proto/vault/v1/genesis.proto b/proto/vault/v1/genesis.proto new file mode 100644 index 000000000..350ba1c73 --- /dev/null +++ b/proto/vault/v1/genesis.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; +package vault.v1; + +import "amino/amino.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/onsonr/sonr/x/vault/types"; + +// GenesisState defines the module genesis state +message GenesisState { + // Params defines all the parameters of the module. + Params params = 1 [(gogoproto.nullable) = false]; +} + +// Params defines the set of module parameters. +message Params { + option (amino.name) = "vault/params"; + option (gogoproto.equal) = true; + option (gogoproto.goproto_stringer) = false; + + bool ipfs_active = 1; + bool local_registration_enabled = 2; + Schema schema = 3; +} + +message Schema { + int32 version = 1; + string account = 2; + string asset = 3; + string chain = 4; + string credential = 5; + string jwk = 6; + string grant = 7; + string keyshare = 8; + string publicKey = 9; + string profile = 10; +} diff --git a/proto/vault/v1/query.proto b/proto/vault/v1/query.proto new file mode 100644 index 000000000..9e2d0f501 --- /dev/null +++ b/proto/vault/v1/query.proto @@ -0,0 +1,66 @@ +syntax = "proto3"; +package vault.v1; + +import "google/api/annotations.proto"; +import "vault/v1/genesis.proto"; + +option go_package = "github.com/onsonr/sonr/x/vault/types"; + +// Query provides defines the gRPC querier service. +service Query { + // Params queries all parameters of the module. + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/vault/v1/params"; + } + + // BuildTx builds an unsigned transaction message for the given PKL. + rpc BuildTx(BuildTxRequest) returns (BuildTxResponse) { + option (google.api.http).post = "/vault/v1/buildtx"; + } + + // Sync queries the DID document by its id. And returns the required PKL + // information + rpc Sync(SyncRequest) returns (SyncResponse) { + option (google.api.http).post = "/vault/v1/sync"; + } +} + +// QueryParamsRequest is the request type for the Query/Params RPC method. +message QueryParamsRequest {} + +// QueryParamsResponse is the response type for the Query/Params RPC method. +message QueryParamsResponse { + // params defines the parameters of the module. + Params params = 1; +} + +// QueryIPFSRequest is the request type for the Query/IPFS RPC method. +message QueryIPFSRequest {} + +// QueryIPFSResponse is the response type for the Query/IPFS RPC method. +message QueryIPFSResponse { + // IPFS is the IPFS client status. + bool ipfs = 1; +} + +// SyncRequest is the request type for the Sync RPC method. +message SyncRequest { + string did = 1; +} + +// SyncResponse is the response type for the Sync RPC method. +message SyncResponse { + bool success = 1; +} + +// BuildTxRequest is the request type for the BuildTx RPC method. +message BuildTxRequest { + string did = 1; + string pkl = 2; +} + +// BuildTxResponse is the response type for the BuildTx RPC method. +message BuildTxResponse { + bool success = 1; + string tx = 2; +} diff --git a/proto/vault/v1/state.proto b/proto/vault/v1/state.proto new file mode 100644 index 000000000..fa0f67600 --- /dev/null +++ b/proto/vault/v1/state.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; +package vault.v1; + +import "cosmos/orm/v1/orm.proto"; + +option go_package = "github.com/onsonr/sonr/x/vault/types"; + +// https://github.com/cosmos/cosmos-sdk/blob/main/orm/README.md + +message DWN { + option (cosmos.orm.v1.table) = { + id: 1 + primary_key: {fields: "account"} + index: { + id: 1 + fields: "amount" + } + }; + + bytes account = 1; + uint64 amount = 2; +} diff --git a/proto/vault/v1/tx.proto b/proto/vault/v1/tx.proto new file mode 100644 index 000000000..b2c491568 --- /dev/null +++ b/proto/vault/v1/tx.proto @@ -0,0 +1,74 @@ +syntax = "proto3"; +package vault.v1; + +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "vault/v1/genesis.proto"; + +option go_package = "github.com/onsonr/sonr/x/vault/types"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + // AllocateVault assembles a sqlite3 database in a local directory and returns + // the CID of the database. this operation is called by services initiating a + // controller registration. + rpc AllocateVault(MsgAllocateVault) returns (MsgAllocateVaultResponse); + + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the governance account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 [(gogoproto.nullable) = false]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} + +// MsgAllocateVault is the message type for the AllocateVault RPC. +message MsgAllocateVault { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the service account. + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // subject is a unique human-defined identifier to associate with the vault. + string subject = 2; + + // origin is the origin of the request in wildcard form. + string origin = 3; +} + +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +message MsgAllocateVaultResponse { + // CID is the content identifier of the vault. + string cid = 1; + + // ExpiryBlock is the block number at which the vault will expire. + int64 expiry_block = 2; + + // RegistrationOptions is a json string of the + // PublicKeyCredentialCreationOptions for WebAuthn + string token = 3; + + // IsLocalhost is a flag to indicate if the vault is localhost + bool localhost = 4; +} diff --git a/x/did/keeper/context.go b/x/did/keeper/context.go deleted file mode 100644 index bae765c07..000000000 --- a/x/did/keeper/context.go +++ /dev/null @@ -1,165 +0,0 @@ -package keeper - -import ( - "context" - "crypto/sha256" - "fmt" - "time" - - nftkeeper "cosmossdk.io/x/nft/keeper" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/ipfs/boxo/path" - "github.com/ipfs/kubo/client/rpc" - "github.com/ipfs/kubo/core/coreiface/options" - "github.com/onsonr/sonr/pkg/vault" - "github.com/onsonr/sonr/x/did/types" - "google.golang.org/grpc/peer" - "gopkg.in/macaroon.v2" -) - -func (k Keeper) UnwrapCtx(goCtx context.Context) Context { - ctx := sdk.UnwrapSDKContext(goCtx) - peer, _ := peer.FromContext(goCtx) - return Context{SDKCtx: ctx, Peer: peer, Keeper: k} -} - -type Context struct { - SDKCtx sdk.Context - Keeper Keeper - Peer *peer.Peer - NFTKeeper nftkeeper.Keeper -} - -// AssembleVault assembles the initial vault -func (k Keeper) AssembleVault(ctx Context, subject string, origin string) (string, int64, error) { - v, err := vault.New(subject, origin, "sonr-testnet") - if err != nil { - return "", 0, err - } - cid, err := k.ipfsClient.Unixfs().Add(context.Background(), v.FS) - if err != nil { - return "", 0, err - } - return cid.String(), ctx.CalculateExpiration(time.Second * 15), nil -} - -// AverageBlockTime returns the average block time in seconds -func (c Context) AverageBlockTime() float64 { - return float64(c.SDK().BlockTime().Sub(c.SDK().BlockTime()).Seconds()) -} - -// GetExpirationBlockHeight returns the block height at which the given duration will have passed -func (c Context) CalculateExpiration(duration time.Duration) int64 { - return c.SDKCtx.BlockHeight() + int64(duration.Seconds()/c.AverageBlockTime()) -} - -// IPFSConnected returns true if the IPFS client is initialized -func (c Context) IPFSConnected() bool { - if c.Keeper.ipfsClient == nil { - ipfsClient, err := rpc.NewLocalApi() - if err != nil { - return false - } - c.Keeper.ipfsClient = ipfsClient - } - return c.Keeper.ipfsClient != nil -} - -func (c Context) IsAnonymous() bool { - if c.Peer == nil { - return true - } - return c.Peer.Addr == nil -} - -// IssueMacaroon creates a macaroon with the specified parameters. -func (c Context) IssueMacaroon(sharedMPCPubKey, location, id string, blockExpiry uint64) (*macaroon.Macaroon, error) { - // Derive the root key by hashing the shared MPC public key - rootKey := sha256.Sum256([]byte(sharedMPCPubKey)) - // Create the macaroon - m, err := macaroon.New(rootKey[:], []byte(id), location, macaroon.LatestVersion) - if err != nil { - return nil, err - } - - // Add the block expiry caveat - caveat := fmt.Sprintf("block-expiry=%d", blockExpiry) - err = m.AddFirstPartyCaveat([]byte(caveat)) - if err != nil { - return nil, err - } - - return m, nil -} - -func (c Context) Params() *types.Params { - p, err := c.Keeper.Params.Get(c.SDK()) - if err != nil { - p = types.DefaultParams() - } - params := p.ActiveParams(c.IPFSConnected()) - return ¶ms -} - -func (c Context) PeerID() string { - if c.Peer == nil { - return "" - } - return c.Peer.Addr.String() -} - -// PinVaultController pins the initial vault to the local IPFS node -func (k Keeper) PinVaultController(_ sdk.Context, cid string, address string) (bool, error) { - // Resolve the path - path, err := path.NewPath(cid) - if err != nil { - return false, err - } - - // 1. Initialize vault.db sqlite database in local IPFS with Mount - - // 2. Insert the InitialWalletAccounts - - // 3. Publish the path to the IPNS - _, err = k.ipfsClient.Name().Publish(context.Background(), path, options.Name.Key(address)) - if err != nil { - return false, err - } - - // 4. Insert the accounts into x/auth - - // 5. Insert the controller into state - return true, nil -} - -func (c Context) SDK() sdk.Context { - return c.SDKCtx -} - -// ValidateOrigin checks if a service origin is valid -func (c Context) ValidateOrigin(origin string) error { - if origin == "localhost" { - return nil - } - return types.ErrInvalidServiceOrigin -} - -// VerifyMinimumStake checks if a validator has a minimum stake -func (c Context) VerifyMinimumStake(addr string) bool { - address, err := sdk.AccAddressFromBech32(addr) - if err != nil { - return false - } - addval, err := sdk.ValAddressFromBech32(addr) - if err != nil { - return false - } - del, err := c.Keeper.StakingKeeper.GetDelegation(c.SDK(), address, addval) - if err != nil { - return false - } - if del.Shares.IsZero() { - return false - } - return del.Shares.IsPositive() -} diff --git a/x/did/keeper/controller.go b/x/did/keeper/controller.go new file mode 100644 index 000000000..20f1a3763 --- /dev/null +++ b/x/did/keeper/controller.go @@ -0,0 +1,27 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/onsonr/crypto/mpc" + "github.com/onsonr/sonr/x/did/types" +) + +func (k Keeper) NewController(ctx sdk.Context) (uint64, types.ControllerI, error) { + shares, err := mpc.GenerateKeyshares() + if err != nil { + return 0, nil, err + } + controller, err := types.NewController(shares) + if err != nil { + return 0, nil, err + } + entry, err := controller.GetTableEntry() + if err != nil { + return 0, nil, err + } + num, err := k.OrmDB.ControllerTable().InsertReturningNumber(ctx, entry) + if err != nil { + return 0, nil, err + } + return num, controller, nil +} diff --git a/x/did/keeper/genesis.go b/x/did/keeper/genesis.go index a1b904878..74ba610c4 100644 --- a/x/did/keeper/genesis.go +++ b/x/did/keeper/genesis.go @@ -4,9 +4,8 @@ import ( "context" "cosmossdk.io/log" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/ipfs/boxo/path" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/onsonr/sonr/x/did/types" ) @@ -32,41 +31,16 @@ func (k *Keeper) ExportGenesis(ctx context.Context) *types.GenesisState { } // this line is used by starport scaffolding # genesis/module/export - return &types.GenesisState{ Params: params, } } -// CheckValidatorExists checks if a validator exists -func (k Keeper) CheckValidatorExists(ctx sdk.Context, addr string) bool { - address, err := sdk.ValAddressFromBech32(addr) +// CurrentSchema returns the current schema +func (k Keeper) CurrentParams(ctx sdk.Context) (*types.Params, error) { + p, err := k.Params.Get(ctx) if err != nil { - return false + return nil, err } - ok, err := k.StakingKeeper.Validator(ctx, address) - if err != nil { - return false - } - if ok != nil { - return true - } - return false -} - -// HasPathInIPFS checks if a file is in the local IPFS node -func (k Keeper) HasPathInIPFS(ctx sdk.Context, cid string) (bool, error) { - path, err := path.NewPath(cid) - if err != nil { - return false, err - } - v, err := k.ipfsClient.Unixfs().Get(ctx, path) - if err != nil { - return false, err - } - - if v == nil { - return false, nil - } - return true, nil + return &p, nil } diff --git a/x/did/keeper/keeper.go b/x/did/keeper/keeper.go index 20a10ea34..86523a2ad 100644 --- a/x/did/keeper/keeper.go +++ b/x/did/keeper/keeper.go @@ -7,13 +7,11 @@ import ( "cosmossdk.io/orm/model/ormdb" nftkeeper "cosmossdk.io/x/nft/keeper" "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" stakkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - "github.com/ipfs/kubo/client/rpc" apiv1 "github.com/onsonr/sonr/api/did/v1" "github.com/onsonr/sonr/x/did/types" @@ -34,8 +32,7 @@ type Keeper struct { NftKeeper nftkeeper.Keeper StakingKeeper *stakkeeper.Keeper - authority string - ipfsClient *rpc.HttpApi + authority string } // NewKeeper creates a new poa Keeper instance @@ -66,11 +63,9 @@ func NewKeeper( } // Initialize IPFS client - ipfsClient, _ := rpc.NewLocalApi() k := Keeper{ - ipfsClient: ipfsClient, - cdc: cdc, - logger: logger, + cdc: cdc, + logger: logger, Params: collections.NewItem( sb, types.ParamsKey, @@ -91,13 +86,3 @@ func NewKeeper( k.Schema = schema return k } - -// VerifyServicePermissions checks if a service has permission -func (k Keeper) VerifyServicePermissions( - ctx sdk.Context, - addr string, - service string, - permissions string, -) bool { - return false -} diff --git a/x/did/keeper/macaroon.go b/x/did/keeper/macaroon.go new file mode 100644 index 000000000..b2bb9dd75 --- /dev/null +++ b/x/did/keeper/macaroon.go @@ -0,0 +1,29 @@ +package keeper + +import ( + "crypto/sha256" + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "gopkg.in/macaroon.v2" +) + +// IssueMacaroon creates a macaroon with the specified parameters. +func (k Keeper) IssueMacaroon(ctx sdk.Context, sharedMPCPubKey, location, id string, blockExpiry uint64) (*macaroon.Macaroon, error) { + // Derive the root key by hashing the shared MPC public key + rootKey := sha256.Sum256([]byte(sharedMPCPubKey)) + // Create the macaroon + m, err := macaroon.New(rootKey[:], []byte(id), location, macaroon.LatestVersion) + if err != nil { + return nil, err + } + + // Add the block expiry caveat + caveat := fmt.Sprintf("block-expiry=%d", blockExpiry) + err = m.AddFirstPartyCaveat([]byte(caveat)) + if err != nil { + return nil, err + } + + return m, nil +} diff --git a/x/did/keeper/querier.go b/x/did/keeper/querier.go index d95f04018..ef7ec9cfe 100644 --- a/x/did/keeper/querier.go +++ b/x/did/keeper/querier.go @@ -3,6 +3,7 @@ package keeper import ( "context" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/onsonr/sonr/x/did/types" ) @@ -17,25 +18,16 @@ func NewQuerier(keeper Keeper) Querier { } // Params returns the total set of did parameters. -func (k Querier) Params( - goCtx context.Context, - req *types.QueryRequest, -) (*types.QueryParamsResponse, error) { - ctx := k.UnwrapCtx(goCtx) - return &types.QueryParamsResponse{Params: ctx.Params()}, nil +func (k Querier) Params(goCtx context.Context, req *types.QueryRequest) (*types.QueryParamsResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + p, err := k.Keeper.CurrentParams(ctx) + if err != nil { + return nil, err + } + return &types.QueryParamsResponse{Params: p}, nil } // Resolve implements types.QueryServer. -func (k Querier) Resolve( - goCtx context.Context, - req *types.QueryRequest, -) (*types.QueryResolveResponse, error) { - _ = k.UnwrapCtx(goCtx) +func (k Querier) Resolve(goCtx context.Context, req *types.QueryRequest) (*types.QueryResolveResponse, error) { return &types.QueryResolveResponse{}, nil } - -// Sync implements types.QueryServer. -func (k Querier) Sync(goCtx context.Context, req *types.SyncRequest) (*types.SyncResponse, error) { - // ctx := sdk.UnwrapSDKContext(goCtx) - return &types.SyncResponse{}, nil -} diff --git a/x/did/keeper/server.go b/x/did/keeper/server.go index 8796dbf41..ed453f671 100644 --- a/x/did/keeper/server.go +++ b/x/did/keeper/server.go @@ -21,50 +21,14 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { return &msgServer{k: keeper} } -// # AllocateVault -// -// AllocateVault implements types.MsgServer. -func (ms msgServer) AllocateVault( - goCtx context.Context, - msg *types.MsgAllocateVault, -) (*types.MsgAllocateVaultResponse, error) { - // 1.Check if the service origin is valid - ctx := ms.k.UnwrapCtx(goCtx) - if err := ctx.ValidateOrigin(msg.Origin); err != nil { - return nil, err - } - - // 2.Allocate the vault - cid, expiryBlock, err := ms.k.AssembleVault(ctx, msg.GetSubject(), msg.GetOrigin()) - if err != nil { - return nil, err - } - - // 3.Return the response - return &types.MsgAllocateVaultResponse{ - ExpiryBlock: expiryBlock, - Cid: cid, - }, nil -} - -// # RegisterController -// // RegisterController implements types.MsgServer. -func (ms msgServer) RegisterController( - goCtx context.Context, - msg *types.MsgRegisterController, -) (*types.MsgRegisterControllerResponse, error) { +func (ms msgServer) RegisterController(goCtx context.Context, msg *types.MsgRegisterController) (*types.MsgRegisterControllerResponse, error) { _ = sdk.UnwrapSDKContext(goCtx) return &types.MsgRegisterControllerResponse{}, nil } -// # RegisterService -// // RegisterService implements types.MsgServer. -func (ms msgServer) RegisterService( - goCtx context.Context, - msg *types.MsgRegisterService, -) (*types.MsgRegisterServiceResponse, error) { +func (ms msgServer) RegisterService(goCtx context.Context, msg *types.MsgRegisterService) (*types.MsgRegisterServiceResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) // 1.Check if the service origin is valid @@ -74,8 +38,6 @@ func (ms msgServer) RegisterService( return nil, errors.Wrapf(types.ErrInvalidServiceOrigin, "invalid service origin") } -// # AuthorizeService -// // AuthorizeService implements types.MsgServer. func (ms msgServer) AuthorizeService(goCtx context.Context, msg *types.MsgAuthorizeService) (*types.MsgAuthorizeServiceResponse, error) { if ms.k.authority != msg.Controller { @@ -89,13 +51,8 @@ func (ms msgServer) AuthorizeService(goCtx context.Context, msg *types.MsgAuthor return &types.MsgAuthorizeServiceResponse{}, nil } -// # UpdateParams -// // UpdateParams updates the x/did module parameters. -func (ms msgServer) UpdateParams( - ctx context.Context, - msg *types.MsgUpdateParams, -) (*types.MsgUpdateParamsResponse, error) { +func (ms msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { if ms.k.authority != msg.Authority { return nil, errors.Wrapf( govtypes.ErrInvalidSigner, @@ -110,6 +67,5 @@ func (ms msgServer) UpdateParams( // ExecuteTx implements types.MsgServer. func (ms msgServer) ExecuteTx(ctx context.Context, msg *types.MsgExecuteTx) (*types.MsgExecuteTxResponse, error) { // ctx := sdk.UnwrapSDKContext(goCtx) - panic("ExecuteTx is unimplemented") return &types.MsgExecuteTxResponse{}, nil } diff --git a/x/did/types/account.go b/x/did/types/account.go index ab1254f4c..16be5f447 100644 --- a/x/did/types/account.go +++ b/x/did/types/account.go @@ -1 +1,12 @@ package types + +type SonrAccount struct { + ID string + Name string + Address string + PublicKey string + ChainCode string + Index string + Controller string + CreatedAt string +} diff --git a/x/did/types/address.go b/x/did/types/address.go index ab1254f4c..faf63d532 100644 --- a/x/did/types/address.go +++ b/x/did/types/address.go @@ -1 +1,56 @@ package types + +import ( + "crypto/ecdsa" + "strings" + + "github.com/cosmos/cosmos-sdk/types/bech32" + ethcrypto "github.com/ethereum/go-ethereum/crypto" + "golang.org/x/crypto/sha3" +) + +// ComputeSonrAddress computes the Sonr address from a public key +func ComputeSonrAddress(pk []byte) (string, error) { + sonrAddr, err := bech32.ConvertAndEncode("idx", pk) + if err != nil { + return "", err + } + return sonrAddr, nil +} + +// ComputeBitcoinAddress computes the Bitcoin address from a public key +func ComputeBitcoinAddress(pk []byte) (string, error) { + btcAddr, err := bech32.ConvertAndEncode("bc", pk) + if err != nil { + return "", err + } + return btcAddr, nil +} + +// ComputeEthAddress computes the Ethereum address from a public key +func ComputeEthAddress(pk *ecdsa.PublicKey) string { + // Generate Ethereum address + address := ethcrypto.PubkeyToAddress(*pk) + + // Apply ERC-55 checksum encoding + addr := address.Hex() + addr = strings.ToLower(addr) + addr = strings.TrimPrefix(addr, "0x") + hash := sha3.NewLegacyKeccak256() + hash.Write([]byte(addr)) + hashBytes := hash.Sum(nil) + + result := "0x" + for i, c := range addr { + if c >= '0' && c <= '9' { + result += string(c) + } else { + if hashBytes[i/2]>>(4-i%2*4)&0xf >= 8 { + result += strings.ToUpper(string(c)) + } else { + result += string(c) + } + } + } + return result +} diff --git a/x/did/types/codec.go b/x/did/types/codec.go index c2913f290..018e0f547 100644 --- a/x/did/types/codec.go +++ b/x/did/types/codec.go @@ -1,12 +1,6 @@ package types import ( - "crypto/ecdsa" - "strings" - - ethcrypto "github.com/ethereum/go-ethereum/crypto" - "golang.org/x/crypto/sha3" - "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -32,7 +26,6 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateParams{}, ModuleName+"/MsgUpdateParams", nil) cdc.RegisterConcrete(&MsgRegisterController{}, ModuleName+"/MsgRegisterController", nil) cdc.RegisterConcrete(&MsgRegisterService{}, ModuleName+"/MsgRegisterService", nil) - cdc.RegisterConcrete(&MsgAllocateVault{}, ModuleName+"/MsgAllocateVault", nil) } func RegisterInterfaces(registry types.InterfaceRegistry) { @@ -46,34 +39,6 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &MsgUpdateParams{}, &MsgRegisterController{}, &MsgRegisterService{}, - &MsgAllocateVault{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } - -func ComputeEthAddress(pk ecdsa.PublicKey) string { - // Generate Ethereum address - address := ethcrypto.PubkeyToAddress(pk) - - // Apply ERC-55 checksum encoding - addr := address.Hex() - addr = strings.ToLower(addr) - addr = strings.TrimPrefix(addr, "0x") - hash := sha3.NewLegacyKeccak256() - hash.Write([]byte(addr)) - hashBytes := hash.Sum(nil) - - result := "0x" - for i, c := range addr { - if c >= '0' && c <= '9' { - result += string(c) - } else { - if hashBytes[i/2]>>(4-i%2*4)&0xf >= 8 { - result += strings.ToUpper(string(c)) - } else { - result += string(c) - } - } - } - return result -} diff --git a/x/did/types/controller.go b/x/did/types/controller.go new file mode 100644 index 000000000..ef91f6d95 --- /dev/null +++ b/x/did/types/controller.go @@ -0,0 +1,101 @@ +package types + +import ( + fmt "fmt" + + "github.com/onsonr/crypto/mpc" + didv1 "github.com/onsonr/sonr/api/did/v1" +) + +type controller struct { + userKs mpc.Share + valKs mpc.Share + address string + chainID string + ethAddr string + btcAddr string + publicKey []byte +} + +func (c *controller) GetTableEntry() (*didv1.Controller, error) { + valKs, err := c.valKs.Marshal() + if err != nil { + return nil, err + } + return &didv1.Controller{ + KsVal: valKs, + Did: fmt.Sprintf("did:sonr:%s", c.address), + SonrAddress: c.address, + EthAddress: c.ethAddr, + BtcAddress: c.btcAddr, + PublicKey: c.publicKey, + }, nil +} + +func (c *controller) ExportUserKs() (string, error) { + return c.userKs.Marshal() +} + +func (c *controller) ChainID() string { + return c.chainID +} + +func (c *controller) SonrAddress() string { + return c.address +} + +func (c *controller) EthAddress() string { + return c.ethAddr +} + +func (c *controller) BtcAddress() string { + return c.btcAddr +} + +func (c *controller) PublicKey() []byte { + return c.publicKey +} + +type ControllerI interface { + ChainID() string + SonrAddress() string + EthAddress() string + BtcAddress() string + PublicKey() []byte + GetTableEntry() (*didv1.Controller, error) + ExportUserKs() (string, error) +} + +func NewController(shares []mpc.Share) (ControllerI, error) { + var ( + valKs = shares[0] + userKs = shares[1] + ) + pbBz := valKs.GetPublicKey() + sonrAddr, err := ComputeSonrAddress(pbBz) + if err != nil { + return nil, err + } + + btcAddr, err := ComputeBitcoinAddress(pbBz) + if err != nil { + return nil, err + } + + ecdsaPub, err := valKs.ECDSAPublicKey() + if err != nil { + return nil, err + } + + ethAddr := ComputeEthAddress(ecdsaPub) + + return &controller{ + valKs: valKs, + userKs: userKs, + address: sonrAddr, + btcAddr: btcAddr, + ethAddr: ethAddr, + chainID: "sonr-testnet-1", + publicKey: pbBz, + }, nil +} diff --git a/x/did/types/genesis.go b/x/did/types/genesis.go index 2a4ea7fc6..7cfccaea8 100644 --- a/x/did/types/genesis.go +++ b/x/did/types/genesis.go @@ -6,12 +6,12 @@ import ( ormv1alpha1 "cosmossdk.io/api/cosmos/orm/v1alpha1" "cosmossdk.io/collections" - "github.com/onsonr/sonr/internal/orm/assettype" - "github.com/onsonr/sonr/internal/orm/keyalgorithm" - "github.com/onsonr/sonr/internal/orm/keycurve" - "github.com/onsonr/sonr/internal/orm/keyencoding" - "github.com/onsonr/sonr/internal/orm/keyrole" - "github.com/onsonr/sonr/internal/orm/keytype" + "github.com/onsonr/sonr/x/did/types/orm/assettype" + "github.com/onsonr/sonr/x/did/types/orm/keyalgorithm" + "github.com/onsonr/sonr/x/did/types/orm/keycurve" + "github.com/onsonr/sonr/x/did/types/orm/keyencoding" + "github.com/onsonr/sonr/x/did/types/orm/keyrole" + "github.com/onsonr/sonr/x/did/types/orm/keytype" ) // ParamsKey saves the current module params. @@ -53,23 +53,13 @@ func (gs GenesisState) Validate() error { return gs.Params.Validate() } -// // DefaultNFTClasses configures the Initial DIDNamespace NFT classes -// -// func DefaultNFTClasses(nftGenesis *nft.GenesisState) error { -// for _, n := range DIDNamespace_value { -// nftGenesis.Classes = append(nftGenesis.Classes, DIDNamespace(n).GetNFTClass()) -// } -// return nil -// } -// // DefaultParams returns default module parameters. func DefaultParams() Params { return Params{ - WhitelistedAssets: DefaultAssets(), - AllowedPublicKeys: DefaultKeyInfos(), - LocalhostRegistrationEnabled: true, - ConveyancePreference: "direct", - AttestationFormats: []string{"packed", "android-key", "fido-u2f", "apple"}, + WhitelistedAssets: DefaultAssets(), + AllowedPublicKeys: DefaultKeyInfos(), + ConveyancePreference: "direct", + AttestationFormats: []string{"packed", "android-key", "fido-u2f", "apple"}, } } @@ -179,11 +169,6 @@ func DefaultKeyInfos() map[string]*KeyInfo { } } -func (p Params) ActiveParams(ipfsActive bool) Params { - p.IpfsActive = ipfsActive - return p -} - // Stringer method for Params. func (p Params) String() string { bz, err := json.Marshal(p) diff --git a/x/did/types/genesis.pb.go b/x/did/types/genesis.pb.go index 24b1d6dce..f80f1e1b9 100644 --- a/x/did/types/genesis.pb.go +++ b/x/did/types/genesis.pb.go @@ -76,14 +76,10 @@ type Params struct { WhitelistedAssets []*AssetInfo `protobuf:"bytes,1,rep,name=whitelisted_assets,json=whitelistedAssets,proto3" json:"whitelisted_assets,omitempty"` // Whitelisted Key Types AllowedPublicKeys map[string]*KeyInfo `protobuf:"bytes,2,rep,name=allowed_public_keys,json=allowedPublicKeys,proto3" json:"allowed_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // IpfsActive is a flag to enable/disable ipfs - IpfsActive bool `protobuf:"varint,3,opt,name=ipfs_active,json=ipfsActive,proto3" json:"ipfs_active,omitempty"` - // Localhost Registration Enabled - LocalhostRegistrationEnabled bool `protobuf:"varint,4,opt,name=localhost_registration_enabled,json=localhostRegistrationEnabled,proto3" json:"localhost_registration_enabled,omitempty"` // ConveyancePreference defines the conveyance preference - ConveyancePreference string `protobuf:"bytes,5,opt,name=conveyance_preference,json=conveyancePreference,proto3" json:"conveyance_preference,omitempty"` + ConveyancePreference string `protobuf:"bytes,3,opt,name=conveyance_preference,json=conveyancePreference,proto3" json:"conveyance_preference,omitempty"` // AttestationFormats defines the attestation formats - AttestationFormats []string `protobuf:"bytes,6,rep,name=attestation_formats,json=attestationFormats,proto3" json:"attestation_formats,omitempty"` + AttestationFormats []string `protobuf:"bytes,4,rep,name=attestation_formats,json=attestationFormats,proto3" json:"attestation_formats,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -132,20 +128,6 @@ func (m *Params) GetAllowedPublicKeys() map[string]*KeyInfo { return nil } -func (m *Params) GetIpfsActive() bool { - if m != nil { - return m.IpfsActive - } - return false -} - -func (m *Params) GetLocalhostRegistrationEnabled() bool { - if m != nil { - return m.LocalhostRegistrationEnabled - } - return false -} - func (m *Params) GetConveyancePreference() string { if m != nil { return m.ConveyancePreference @@ -350,7 +332,8 @@ type KeyInfo struct { Algorithm string `protobuf:"bytes,2,opt,name=algorithm,proto3" json:"algorithm,omitempty"` Encoding string `protobuf:"bytes,3,opt,name=encoding,proto3" json:"encoding,omitempty"` Curve string `protobuf:"bytes,4,opt,name=curve,proto3" json:"curve,omitempty"` - Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` + // "Ed25519", "Ed448", "secp256k1" + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` } func (m *KeyInfo) Reset() { *m = KeyInfo{} } @@ -709,69 +692,66 @@ func init() { func init() { proto.RegisterFile("did/v1/genesis.proto", fileDescriptor_fda181cae44f7c00) } var fileDescriptor_fda181cae44f7c00 = []byte{ - // 983 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0x7a, 0x1b, 0x3b, 0x7e, 0x8e, 0xd2, 0x64, 0xea, 0x96, 0xad, 0x55, 0x1c, 0x63, 0x51, - 0x14, 0x10, 0xb2, 0xd5, 0xf4, 0x82, 0xaa, 0x0a, 0x91, 0x90, 0x80, 0xda, 0x08, 0x29, 0xda, 0x12, - 0x55, 0xe2, 0xb2, 0x1a, 0xef, 0xbe, 0xd8, 0x83, 0xd7, 0x33, 0xab, 0x99, 0xb1, 0x93, 0x3d, 0x72, - 0xe5, 0x04, 0x37, 0xb8, 0x55, 0xfc, 0x02, 0xf8, 0x17, 0x3d, 0xf6, 0xc8, 0xa9, 0x42, 0xc9, 0x01, - 0x7e, 0x06, 0x9a, 0xd9, 0xb1, 0xbd, 0x98, 0x5c, 0xb8, 0x70, 0x59, 0xbf, 0xf7, 0xbd, 0x37, 0xef, - 0xbd, 0x79, 0xdf, 0x9b, 0x67, 0x68, 0x26, 0x2c, 0xe9, 0xcf, 0x1e, 0xf5, 0x87, 0xc8, 0x51, 0x31, - 0xd5, 0xcb, 0xa4, 0xd0, 0x82, 0x54, 0x13, 0x96, 0xf4, 0x66, 0x8f, 0x5a, 0x3b, 0x74, 0xc2, 0xb8, - 0xe8, 0xdb, 0x6f, 0x61, 0x6a, 0x35, 0x87, 0x62, 0x28, 0xac, 0xd8, 0x37, 0x52, 0x81, 0x76, 0x9f, - 0xc2, 0xe6, 0x97, 0x45, 0x84, 0x17, 0x9a, 0x6a, 0x24, 0x1f, 0x43, 0x35, 0xa3, 0x92, 0x4e, 0x54, - 0xe0, 0x75, 0xbc, 0xbd, 0xc6, 0xfe, 0x56, 0xaf, 0x88, 0xd8, 0x3b, 0xb5, 0xe8, 0xe1, 0xad, 0xd7, - 0x6f, 0x77, 0xd7, 0x42, 0xe7, 0xd3, 0x7d, 0xeb, 0x43, 0xb5, 0x30, 0x90, 0xcf, 0x80, 0x5c, 0x8c, - 0x98, 0xc6, 0x94, 0x29, 0x8d, 0x49, 0x44, 0x95, 0x42, 0x6d, 0x82, 0xf8, 0x7b, 0x8d, 0xfd, 0x9d, - 0x79, 0x90, 0x03, 0x83, 0x3e, 0xe3, 0xe7, 0x22, 0xdc, 0x29, 0x39, 0x5b, 0x54, 0x91, 0x33, 0xb8, - 0x43, 0xd3, 0x54, 0x5c, 0x60, 0x12, 0x65, 0xd3, 0x41, 0xca, 0xe2, 0x68, 0x8c, 0xb9, 0x0a, 0x2a, - 0x36, 0xc4, 0xc3, 0x7f, 0xd6, 0xd1, 0x3b, 0x28, 0x3c, 0x4f, 0xad, 0xe3, 0x09, 0xe6, 0xea, 0x98, - 0x6b, 0x99, 0x87, 0x3b, 0x74, 0x15, 0x27, 0xbb, 0xd0, 0x60, 0xd9, 0xb9, 0x8a, 0x68, 0xac, 0xd9, - 0x0c, 0x03, 0xbf, 0xe3, 0xed, 0x6d, 0x84, 0x60, 0xa0, 0x03, 0x8b, 0x90, 0x23, 0x68, 0xa7, 0x22, - 0xa6, 0xe9, 0x48, 0x28, 0x1d, 0x49, 0x1c, 0x32, 0xa5, 0x25, 0xd5, 0x4c, 0xf0, 0x08, 0x39, 0x1d, - 0xa4, 0x98, 0x04, 0xb7, 0xec, 0x99, 0x07, 0x0b, 0xaf, 0xb0, 0xe4, 0x74, 0x5c, 0xf8, 0x90, 0xc7, - 0x70, 0x37, 0x16, 0x7c, 0x86, 0x39, 0xe5, 0x31, 0x46, 0x99, 0xc4, 0x73, 0x94, 0xc8, 0x63, 0x0c, - 0xd6, 0x3b, 0xde, 0x5e, 0x3d, 0x6c, 0x2e, 0x8d, 0xa7, 0x0b, 0x1b, 0xe9, 0xc3, 0x1d, 0xaa, 0x35, - 0x2a, 0x5d, 0xe4, 0x3b, 0x17, 0x72, 0x42, 0xb5, 0x0a, 0xaa, 0x1d, 0x7f, 0xaf, 0x1e, 0x92, 0x92, - 0xe9, 0x8b, 0xc2, 0xd2, 0x3a, 0x83, 0x7b, 0x37, 0xdf, 0x9c, 0x6c, 0x83, 0x3f, 0xc6, 0xdc, 0xb2, - 0x56, 0x0f, 0x8d, 0x48, 0x1e, 0xc2, 0xfa, 0x8c, 0xa6, 0x53, 0x0c, 0x2a, 0x96, 0xc9, 0xdb, 0xf3, - 0x0e, 0x9e, 0x60, 0x6e, 0x29, 0x28, 0xac, 0x4f, 0x2a, 0x9f, 0x78, 0x4f, 0xde, 0xf9, 0xe9, 0xd5, - 0xee, 0xda, 0x5f, 0xaf, 0x76, 0xbd, 0xef, 0xff, 0xfc, 0xf5, 0x23, 0x30, 0x93, 0xe5, 0x08, 0xfe, - 0xd9, 0x83, 0xfa, 0x82, 0x34, 0xd2, 0x84, 0x75, 0xc6, 0x13, 0xbc, 0xb4, 0x59, 0xfc, 0xb0, 0x50, - 0x4c, 0xe6, 0x91, 0xcc, 0x6c, 0x96, 0x7a, 0x68, 0x44, 0x72, 0x0f, 0xaa, 0x2a, 0x9f, 0x0c, 0x44, - 0x6a, 0xbb, 0x5d, 0x0f, 0x9d, 0x46, 0xde, 0x05, 0xb0, 0x73, 0x11, 0xe9, 0x3c, 0x43, 0xdb, 0xd5, - 0x7a, 0x58, 0xb7, 0xc8, 0xd7, 0x79, 0x86, 0x84, 0xc0, 0x2d, 0x4e, 0x27, 0xf3, 0x8e, 0x59, 0x99, - 0xdc, 0x87, 0x0d, 0x16, 0x0b, 0x1e, 0x4d, 0x65, 0x1a, 0x54, 0x2d, 0x5e, 0x33, 0xfa, 0x99, 0x4c, - 0xbb, 0x3f, 0x56, 0x60, 0xe3, 0x48, 0xc4, 0xd3, 0x09, 0x72, 0x4d, 0xb6, 0xa0, 0xc2, 0x12, 0x77, - 0xfb, 0x0a, 0x4b, 0x48, 0x1b, 0x20, 0x16, 0x5c, 0x4b, 0x91, 0xa6, 0x28, 0x5d, 0x6d, 0x25, 0x84, - 0x7c, 0x00, 0x5b, 0x74, 0xaa, 0x47, 0xc8, 0x35, 0x8b, 0x6d, 0x87, 0x03, 0xdf, 0x36, 0x7d, 0x05, - 0x25, 0x1f, 0xc2, 0xb6, 0x29, 0x50, 0x5a, 0x7e, 0x26, 0xa8, 0x47, 0xc2, 0x8c, 0x83, 0xf1, 0xbc, - 0xbd, 0xc0, 0xbf, 0xb2, 0xb0, 0x9d, 0x00, 0x9a, 0xd1, 0x01, 0x4b, 0x99, 0xce, 0xa3, 0x04, 0x53, - 0x1c, 0x16, 0x91, 0xd7, 0xad, 0x7f, 0x73, 0x69, 0x3c, 0x5a, 0xd8, 0x56, 0x0e, 0x31, 0x3e, 0x13, - 0xae, 0x9c, 0xea, 0xea, 0xa1, 0x67, 0x0b, 0x1b, 0x09, 0xa0, 0xa6, 0x50, 0xce, 0x58, 0x8c, 0x41, - 0xcd, 0xba, 0xcd, 0xd5, 0xee, 0x77, 0x1e, 0xd4, 0x1c, 0xbf, 0xa6, 0x9d, 0x52, 0xa4, 0xe8, 0x9a, - 0x62, 0x65, 0xf2, 0x00, 0xea, 0x34, 0x1d, 0x0a, 0xc9, 0xf4, 0x68, 0xe2, 0xba, 0xb2, 0x04, 0x48, - 0x0b, 0x36, 0x90, 0xc7, 0x22, 0x61, 0x7c, 0xe8, 0x98, 0x5b, 0xe8, 0x86, 0xfb, 0x78, 0x2a, 0x67, - 0x73, 0xda, 0x0a, 0xc5, 0xe4, 0xb0, 0x5c, 0x3a, 0xca, 0x8c, 0xdc, 0xfd, 0xa5, 0x02, 0xd5, 0xd3, - 0xe9, 0xe0, 0x04, 0xf3, 0xff, 0xa5, 0x84, 0xfb, 0xb0, 0x31, 0xc6, 0x3c, 0x2a, 0x95, 0x51, 0x1b, - 0x63, 0x6e, 0x07, 0x6a, 0x1b, 0x7c, 0x49, 0x2f, 0xec, 0xdc, 0x6c, 0x86, 0x46, 0x24, 0xef, 0x83, - 0xff, 0xed, 0xc5, 0x38, 0xa8, 0xd9, 0x17, 0x41, 0x16, 0x3b, 0xc5, 0x56, 0xdb, 0x7b, 0xfe, 0xf2, - 0x24, 0x34, 0xe6, 0x16, 0x05, 0xff, 0xf9, 0xcb, 0x13, 0xfb, 0xa4, 0xf4, 0xf2, 0x49, 0x69, 0xfb, - 0xc8, 0x62, 0x39, 0x9b, 0x8f, 0x7a, 0x2c, 0x67, 0x64, 0x13, 0xbc, 0x4b, 0x57, 0xa8, 0x77, 0x69, - 0xb4, 0xdc, 0x55, 0xe7, 0xe5, 0x46, 0xe3, 0xae, 0x24, 0x8f, 0x1b, 0x0d, 0xdd, 0x08, 0x7b, 0xd8, - 0xfd, 0xcd, 0x87, 0xda, 0x8b, 0x82, 0xb4, 0x7f, 0xcd, 0xee, 0x7b, 0xb0, 0xe9, 0xf8, 0x2c, 0x6e, - 0x55, 0xa4, 0x6b, 0x38, 0xcc, 0xde, 0xcc, 0x34, 0x71, 0xaa, 0x47, 0xa6, 0x69, 0xb9, 0x4b, 0xbf, - 0x04, 0xcc, 0xfb, 0x13, 0x92, 0x0d, 0x19, 0x77, 0xb5, 0x38, 0x8d, 0x74, 0xa0, 0x91, 0xa0, 0x8a, - 0x25, 0xcb, 0xdc, 0x5c, 0xda, 0xb8, 0x25, 0x88, 0x84, 0xb0, 0x33, 0x4f, 0x8d, 0x3c, 0xc9, 0x04, - 0xe3, 0x6e, 0x1d, 0x95, 0x36, 0xb0, 0x2b, 0x7b, 0xfe, 0x7b, 0x3c, 0xf7, 0x2b, 0x36, 0xf0, 0xb6, - 0x5a, 0x81, 0xc9, 0x21, 0x34, 0x32, 0x94, 0x13, 0xa6, 0x14, 0x13, 0x5c, 0xd9, 0x89, 0x6d, 0xec, - 0x77, 0x56, 0xa3, 0x9d, 0x2e, 0x5d, 0x8a, 0x40, 0xe5, 0x43, 0xad, 0xcf, 0xe1, 0xee, 0x8d, 0xe9, - 0x6e, 0x58, 0x7b, 0xcd, 0xf2, 0xda, 0xab, 0x97, 0xb6, 0x5c, 0xeb, 0x53, 0xd8, 0x5e, 0xcd, 0xf2, - 0x5f, 0xce, 0x1f, 0x3e, 0x7d, 0x7d, 0xd5, 0xf6, 0xde, 0x5c, 0xb5, 0xbd, 0x3f, 0xae, 0xda, 0xde, - 0x0f, 0xd7, 0xed, 0xb5, 0x37, 0xd7, 0xed, 0xb5, 0xdf, 0xaf, 0xdb, 0x6b, 0xdf, 0x74, 0x87, 0x4c, - 0x8f, 0xa6, 0x83, 0x5e, 0x2c, 0x26, 0x7d, 0xc1, 0x95, 0xe0, 0xb2, 0x6f, 0x3f, 0x97, 0x7d, 0xb3, - 0x4b, 0x0d, 0x89, 0x6a, 0x50, 0xb5, 0x7f, 0xb8, 0x8f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x96, - 0x98, 0xb5, 0xcd, 0xb9, 0x07, 0x00, 0x00, + // 929 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0x7a, 0x13, 0x3b, 0x7e, 0x8e, 0x52, 0x7b, 0xea, 0x96, 0xad, 0x05, 0x8e, 0xb1, 0x28, + 0x0a, 0x08, 0xd9, 0x6a, 0x7a, 0x41, 0x55, 0x85, 0x68, 0x68, 0x41, 0xad, 0x85, 0x14, 0x6d, 0x89, + 0x2a, 0x71, 0xb1, 0xc6, 0xbb, 0x2f, 0xf6, 0xe0, 0xdd, 0x99, 0xd5, 0xcc, 0xd8, 0xc9, 0x1e, 0xb9, + 0x72, 0x82, 0x1b, 0xdc, 0x2a, 0x3e, 0x01, 0x7c, 0x8b, 0x1e, 0x7b, 0xe4, 0x84, 0x50, 0x72, 0x80, + 0x6f, 0xc0, 0x15, 0xcd, 0xec, 0xf8, 0x0f, 0x26, 0x17, 0x2e, 0xbd, 0xac, 0xdf, 0xfb, 0xbd, 0x37, + 0xef, 0xbd, 0x79, 0xbf, 0xf7, 0xc6, 0xd0, 0x8c, 0x59, 0xdc, 0x9f, 0xdf, 0xeb, 0x8f, 0x91, 0xa3, + 0x62, 0xaa, 0x97, 0x49, 0xa1, 0x05, 0x29, 0xc7, 0x2c, 0xee, 0xcd, 0xef, 0xb5, 0x1a, 0x34, 0x65, + 0x5c, 0xf4, 0xed, 0xb7, 0x30, 0xb5, 0x9a, 0x63, 0x31, 0x16, 0x56, 0xec, 0x1b, 0xa9, 0x40, 0xbb, + 0x0f, 0x61, 0xef, 0x8b, 0x22, 0xc2, 0x73, 0x4d, 0x35, 0x92, 0x8f, 0xa0, 0x9c, 0x51, 0x49, 0x53, + 0x15, 0x78, 0x1d, 0xef, 0xb0, 0x76, 0xb4, 0xdf, 0x2b, 0x22, 0xf6, 0x4e, 0x2c, 0x7a, 0xbc, 0xfd, + 0xea, 0xf7, 0x83, 0xad, 0xd0, 0xf9, 0x74, 0xff, 0x2e, 0x41, 0xb9, 0x30, 0x90, 0x4f, 0x81, 0x9c, + 0x4f, 0x98, 0xc6, 0x84, 0x29, 0x8d, 0xf1, 0x90, 0x2a, 0x85, 0xda, 0x04, 0xf1, 0x0f, 0x6b, 0x47, + 0x8d, 0x45, 0x90, 0x47, 0x06, 0x7d, 0xca, 0xcf, 0x44, 0xd8, 0x58, 0x73, 0xb6, 0xa8, 0x22, 0xa7, + 0x70, 0x93, 0x26, 0x89, 0x38, 0xc7, 0x78, 0x98, 0xcd, 0x46, 0x09, 0x8b, 0x86, 0x53, 0xcc, 0x55, + 0x50, 0xb2, 0x21, 0xee, 0xfe, 0xbb, 0x8e, 0xde, 0xa3, 0xc2, 0xf3, 0xc4, 0x3a, 0x0e, 0x30, 0x57, + 0x4f, 0xb8, 0x96, 0x79, 0xd8, 0xa0, 0x9b, 0x38, 0xb9, 0x0f, 0xb7, 0x22, 0xc1, 0xe7, 0x98, 0x53, + 0x1e, 0xe1, 0x30, 0x93, 0x78, 0x86, 0x12, 0x79, 0x84, 0x81, 0xdf, 0xf1, 0x0e, 0xab, 0x61, 0x73, + 0x65, 0x3c, 0x59, 0xda, 0x48, 0x1f, 0x6e, 0x52, 0xad, 0x51, 0x69, 0xaa, 0x99, 0xe0, 0xc3, 0x33, + 0x21, 0x53, 0xaa, 0x55, 0xb0, 0xdd, 0xf1, 0x0f, 0xab, 0x21, 0x59, 0x33, 0x7d, 0x5e, 0x58, 0x5a, + 0xa7, 0x70, 0xfb, 0xfa, 0x92, 0x48, 0x1d, 0xfc, 0x29, 0xe6, 0xb6, 0x9d, 0xd5, 0xd0, 0x88, 0xe4, + 0x2e, 0xec, 0xcc, 0x69, 0x32, 0xc3, 0xa0, 0x64, 0x5b, 0x7c, 0x63, 0x71, 0xb5, 0x01, 0xe6, 0xb6, + 0x37, 0x85, 0xf5, 0x41, 0xe9, 0x63, 0xef, 0xc1, 0x5b, 0x3f, 0xbe, 0x3c, 0xd8, 0xfa, 0xeb, 0xe5, + 0x81, 0xf7, 0xdd, 0x9f, 0xbf, 0x7c, 0x08, 0x86, 0x72, 0xd7, 0xf9, 0x9f, 0x3c, 0xa8, 0x2e, 0xbb, + 0x49, 0x9a, 0xb0, 0xc3, 0x78, 0x8c, 0x17, 0x36, 0x8b, 0x1f, 0x16, 0x8a, 0xc9, 0x3c, 0x91, 0x99, + 0xcd, 0x52, 0x0d, 0x8d, 0x48, 0x6e, 0x43, 0x59, 0xe5, 0xe9, 0x48, 0x24, 0xee, 0xf2, 0x4e, 0x23, + 0xef, 0x00, 0x58, 0xc2, 0x86, 0x3a, 0xcf, 0x30, 0xd8, 0xb6, 0xb6, 0xaa, 0x45, 0xbe, 0xca, 0x33, + 0x24, 0x04, 0xb6, 0x39, 0x4d, 0x31, 0xd8, 0xb1, 0x06, 0x2b, 0x93, 0x3b, 0xb0, 0xcb, 0x22, 0xc1, + 0x87, 0x33, 0x99, 0x04, 0x65, 0x8b, 0x57, 0x8c, 0x7e, 0x2a, 0x93, 0xee, 0x0f, 0x25, 0xd8, 0x7d, + 0x2c, 0xa2, 0x59, 0x8a, 0x5c, 0x93, 0x7d, 0x28, 0xb1, 0xd8, 0xdd, 0xbe, 0xc4, 0x62, 0xd2, 0x06, + 0x88, 0x04, 0xd7, 0x52, 0x24, 0x09, 0x4a, 0x57, 0xdb, 0x1a, 0x42, 0xde, 0x87, 0x7d, 0x3a, 0xd3, + 0x13, 0xe4, 0x9a, 0x45, 0xb6, 0xc3, 0x81, 0x6f, 0x9b, 0xbe, 0x81, 0x92, 0x0f, 0xa0, 0x6e, 0x0a, + 0x94, 0x96, 0x9f, 0x14, 0xf5, 0x44, 0xc4, 0x8e, 0x9e, 0x1b, 0x4b, 0xfc, 0x4b, 0x0b, 0xdb, 0x09, + 0xa0, 0x19, 0x1d, 0xb1, 0x84, 0xe9, 0x7c, 0x18, 0x63, 0x82, 0xe3, 0x22, 0xf2, 0x8e, 0xf5, 0x6f, + 0xae, 0x8c, 0x8f, 0x97, 0xb6, 0x8d, 0x43, 0x8c, 0xcf, 0x85, 0x2b, 0xa7, 0xbc, 0x79, 0xe8, 0xe9, + 0xd2, 0x46, 0x02, 0xa8, 0x28, 0x94, 0x73, 0x16, 0x61, 0x50, 0xb1, 0x6e, 0x0b, 0xb5, 0xfb, 0xad, + 0x07, 0x15, 0xc7, 0xaf, 0x69, 0xa7, 0x14, 0x09, 0xba, 0xa6, 0x58, 0x99, 0xbc, 0x0d, 0x55, 0x9a, + 0x8c, 0x85, 0x64, 0x7a, 0x92, 0xba, 0xae, 0xac, 0x00, 0xd2, 0x82, 0x5d, 0xe4, 0x91, 0x88, 0x19, + 0x1f, 0x3b, 0xe6, 0x96, 0xba, 0xe1, 0x3e, 0x9a, 0xc9, 0xf9, 0x82, 0xb6, 0x42, 0x31, 0x39, 0x2c, + 0x97, 0x8e, 0x32, 0x23, 0x77, 0x7f, 0x36, 0xdb, 0x3a, 0x1b, 0x0d, 0x30, 0x7f, 0x23, 0x25, 0xdc, + 0x81, 0xdd, 0x29, 0xe6, 0xc3, 0xb5, 0x32, 0x2a, 0x53, 0xcc, 0xed, 0x40, 0xd5, 0xc1, 0x97, 0xf4, + 0xdc, 0xce, 0xcd, 0x5e, 0x68, 0x44, 0xf2, 0x1e, 0xf8, 0xdf, 0x9c, 0x4f, 0x83, 0x8a, 0xdd, 0x08, + 0xb2, 0x5c, 0x76, 0x5b, 0x6d, 0xef, 0xd9, 0x8b, 0x41, 0x68, 0xcc, 0x2d, 0x0a, 0xfe, 0xb3, 0x17, + 0x03, 0xbb, 0x52, 0x7a, 0xb5, 0x52, 0xda, 0x2e, 0x59, 0x24, 0xe7, 0x8b, 0x51, 0x8f, 0xe4, 0x9c, + 0xec, 0x81, 0x77, 0xe1, 0x0a, 0xf5, 0x2e, 0x8c, 0x96, 0xbb, 0xea, 0xbc, 0xdc, 0x68, 0xdc, 0x95, + 0xe4, 0x71, 0xa3, 0xa1, 0x1b, 0x61, 0x0f, 0xbb, 0xbf, 0xfa, 0x50, 0x79, 0x5e, 0x90, 0xf6, 0x9f, + 0xd9, 0x7d, 0x17, 0xf6, 0x1c, 0x9f, 0xc5, 0xad, 0x8a, 0x74, 0x35, 0x87, 0xd9, 0x9b, 0x99, 0x26, + 0xce, 0xf4, 0xc4, 0x34, 0x2d, 0x77, 0xe9, 0x57, 0x80, 0xd9, 0x3f, 0x21, 0xd9, 0x98, 0x71, 0x57, + 0x8b, 0xd3, 0x48, 0x07, 0x6a, 0x31, 0xaa, 0x48, 0xb2, 0xcc, 0xcd, 0xa5, 0x8d, 0xbb, 0x06, 0x91, + 0x10, 0x1a, 0x8b, 0xd4, 0xc8, 0xe3, 0x4c, 0x30, 0xae, 0x95, 0x1d, 0xc5, 0xb5, 0xa7, 0xd1, 0x95, + 0xbd, 0xf8, 0x7d, 0xb2, 0xf0, 0x2b, 0x9e, 0xc6, 0xba, 0xda, 0x80, 0xc9, 0x31, 0xd4, 0x32, 0x94, + 0x29, 0x53, 0x8a, 0x09, 0xae, 0xec, 0xc4, 0xd6, 0x8e, 0x3a, 0x9b, 0xd1, 0x4e, 0x56, 0x2e, 0x45, + 0xa0, 0xf5, 0x43, 0xad, 0xcf, 0xe0, 0xd6, 0xb5, 0xe9, 0xae, 0x79, 0xf6, 0x9a, 0xeb, 0xcf, 0x5e, + 0x75, 0xed, 0x95, 0x6b, 0x7d, 0x02, 0xf5, 0xcd, 0x2c, 0xff, 0xe7, 0xfc, 0xf1, 0xc3, 0x57, 0x97, + 0x6d, 0xef, 0xf5, 0x65, 0xdb, 0xfb, 0xe3, 0xb2, 0xed, 0x7d, 0x7f, 0xd5, 0xde, 0x7a, 0x7d, 0xd5, + 0xde, 0xfa, 0xed, 0xaa, 0xbd, 0xf5, 0x75, 0x77, 0xcc, 0xf4, 0x64, 0x36, 0xea, 0x45, 0x22, 0xed, + 0x0b, 0xae, 0x04, 0x97, 0x7d, 0xfb, 0xb9, 0xe8, 0x9b, 0xb7, 0xd4, 0x90, 0xa8, 0x46, 0x65, 0xfb, + 0x4f, 0x78, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x47, 0x39, 0xad, 0x38, 0x52, 0x07, 0x00, + 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -809,12 +789,6 @@ func (this *Params) Equal(that interface{}) bool { return false } } - if this.IpfsActive != that1.IpfsActive { - return false - } - if this.LocalhostRegistrationEnabled != that1.LocalhostRegistrationEnabled { - return false - } if this.ConveyancePreference != that1.ConveyancePreference { return false } @@ -887,7 +861,7 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.AttestationFormats[iNdEx]) i = encodeVarintGenesis(dAtA, i, uint64(len(m.AttestationFormats[iNdEx]))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x22 } } if len(m.ConveyancePreference) > 0 { @@ -895,27 +869,7 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.ConveyancePreference) i = encodeVarintGenesis(dAtA, i, uint64(len(m.ConveyancePreference))) i-- - dAtA[i] = 0x2a - } - if m.LocalhostRegistrationEnabled { - i-- - if m.LocalhostRegistrationEnabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if m.IpfsActive { - i-- - if m.IpfsActive { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x18 + dAtA[i] = 0x1a } if len(m.AllowedPublicKeys) > 0 { for k := range m.AllowedPublicKeys { @@ -1448,12 +1402,6 @@ func (m *Params) Size() (n int) { n += mapEntrySize + 1 + sovGenesis(uint64(mapEntrySize)) } } - if m.IpfsActive { - n += 2 - } - if m.LocalhostRegistrationEnabled { - n += 2 - } l = len(m.ConveyancePreference) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) @@ -1972,46 +1920,6 @@ func (m *Params) Unmarshal(dAtA []byte) error { m.AllowedPublicKeys[mapkey] = mapvalue iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IpfsActive", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IpfsActive = bool(v != 0) - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LocalhostRegistrationEnabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.LocalhostRegistrationEnabled = bool(v != 0) - case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConveyancePreference", wireType) } @@ -2043,7 +1951,7 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.ConveyancePreference = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AttestationFormats", wireType) } diff --git a/x/did/types/msgs.go b/x/did/types/msgs.go index 4901c802e..1ec676945 100644 --- a/x/did/types/msgs.go +++ b/x/did/types/msgs.go @@ -83,39 +83,6 @@ func (msg *MsgRegisterService) Validate() error { return nil } -// -// [AllocateVault] -// - -// NewMsgAllocateVault creates a new instance of MsgAllocateVault -func NewMsgAllocateVault( - sender sdk.Address, -) (*MsgAllocateVault, error) { - return &MsgAllocateVault{}, nil -} - -// GetSigners returns the expected signers for a MsgUpdateParams message. -func (msg *MsgAllocateVault) GetSigners() []sdk.AccAddress { - addr, _ := sdk.AccAddressFromBech32(msg.Authority) - return []sdk.AccAddress{addr} -} - -// Route returns the name of the module -func (msg MsgAllocateVault) Route() string { return ModuleName } - -// Type returns the the action -func (msg MsgAllocateVault) Type() string { return "allocate_vault" } - -// GetSignBytes implements the LegacyMsg interface. -func (msg MsgAllocateVault) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) -} - -// Vaalidate does a sanity check on the provided data. -func (msg *MsgAllocateVault) Validate() error { - return nil -} - // // [RegisterController] // diff --git a/internal/orm/Account.pkl.go b/x/did/types/orm/Account.pkl.go similarity index 89% rename from internal/orm/Account.pkl.go rename to x/did/types/orm/Account.pkl.go index 9bf3f02f4..b9e3a5cf8 100644 --- a/internal/orm/Account.pkl.go +++ b/x/did/types/orm/Account.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Account struct { diff --git a/internal/orm/Asset.pkl.go b/x/did/types/orm/Asset.pkl.go similarity index 86% rename from internal/orm/Asset.pkl.go rename to x/did/types/orm/Asset.pkl.go index 7fdfaebc0..5d4be0935 100644 --- a/internal/orm/Asset.pkl.go +++ b/x/did/types/orm/Asset.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Asset struct { diff --git a/internal/orm/Chain.pkl.go b/x/did/types/orm/Chain.pkl.go similarity index 85% rename from internal/orm/Chain.pkl.go rename to x/did/types/orm/Chain.pkl.go index 6fa443c58..a47a250f9 100644 --- a/internal/orm/Chain.pkl.go +++ b/x/did/types/orm/Chain.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Chain struct { diff --git a/internal/orm/Credential.pkl.go b/x/did/types/orm/Credential.pkl.go similarity index 95% rename from internal/orm/Credential.pkl.go rename to x/did/types/orm/Credential.pkl.go index 138ce7f88..e17391216 100644 --- a/internal/orm/Credential.pkl.go +++ b/x/did/types/orm/Credential.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Credential struct { diff --git a/internal/orm/Grant.pkl.go b/x/did/types/orm/Grant.pkl.go similarity index 89% rename from internal/orm/Grant.pkl.go rename to x/did/types/orm/Grant.pkl.go index b5b4d1e3d..25538ef1b 100644 --- a/internal/orm/Grant.pkl.go +++ b/x/did/types/orm/Grant.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Grant struct { diff --git a/internal/orm/JWK.pkl.go b/x/did/types/orm/JWK.pkl.go similarity index 83% rename from internal/orm/JWK.pkl.go rename to x/did/types/orm/JWK.pkl.go index 3cd3f044f..45ab091ef 100644 --- a/internal/orm/JWK.pkl.go +++ b/x/did/types/orm/JWK.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type JWK struct { diff --git a/internal/orm/Keyshare.pkl.go b/x/did/types/orm/Keyshare.pkl.go similarity index 85% rename from internal/orm/Keyshare.pkl.go rename to x/did/types/orm/Keyshare.pkl.go index cbc8b356f..251505f7b 100644 --- a/internal/orm/Keyshare.pkl.go +++ b/x/did/types/orm/Keyshare.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Keyshare struct { diff --git a/internal/orm/Orm.pkl.go b/x/did/types/orm/Models.pkl.go similarity index 72% rename from internal/orm/Orm.pkl.go rename to x/did/types/orm/Models.pkl.go index 0c1f09dbc..24d9aa3fa 100644 --- a/internal/orm/Orm.pkl.go +++ b/x/did/types/orm/Models.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm import ( @@ -7,14 +7,14 @@ import ( "github.com/apple/pkl-go/pkl" ) -type Orm struct { +type Models struct { DbName string `pkl:"db_name"` DbVersion int `pkl:"db_version"` } -// LoadFromPath loads the pkl module at the given path and evaluates it into a Orm -func LoadFromPath(ctx context.Context, path string) (ret *Orm, err error) { +// LoadFromPath loads the pkl module at the given path and evaluates it into a Models +func LoadFromPath(ctx context.Context, path string) (ret *Models, err error) { evaluator, err := pkl.NewEvaluator(ctx, pkl.PreconfiguredOptions) if err != nil { return nil, err @@ -29,9 +29,9 @@ func LoadFromPath(ctx context.Context, path string) (ret *Orm, err error) { return ret, err } -// Load loads the pkl module at the given source and evaluates it with the given evaluator into a Orm -func Load(ctx context.Context, evaluator pkl.Evaluator, source *pkl.ModuleSource) (*Orm, error) { - var ret Orm +// Load loads the pkl module at the given source and evaluates it with the given evaluator into a Models +func Load(ctx context.Context, evaluator pkl.Evaluator, source *pkl.ModuleSource) (*Models, error) { + var ret Models if err := evaluator.EvaluateModule(ctx, source, &ret); err != nil { return nil, err } diff --git a/internal/orm/Profile.pkl.go b/x/did/types/orm/Profile.pkl.go similarity index 90% rename from internal/orm/Profile.pkl.go rename to x/did/types/orm/Profile.pkl.go index 794e4e352..276f30704 100644 --- a/internal/orm/Profile.pkl.go +++ b/x/did/types/orm/Profile.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm type Profile struct { diff --git a/internal/orm/PublicKey.pkl.go b/x/did/types/orm/PublicKey.pkl.go similarity index 53% rename from internal/orm/PublicKey.pkl.go rename to x/did/types/orm/PublicKey.pkl.go index a81904913..c07beb191 100644 --- a/internal/orm/PublicKey.pkl.go +++ b/x/did/types/orm/PublicKey.pkl.go @@ -1,12 +1,12 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package orm import ( - "github.com/onsonr/sonr/internal/orm/keyalgorithm" - "github.com/onsonr/sonr/internal/orm/keycurve" - "github.com/onsonr/sonr/internal/orm/keyencoding" - "github.com/onsonr/sonr/internal/orm/keyrole" - "github.com/onsonr/sonr/internal/orm/keytype" + "github.com/onsonr/sonr/x/did/types/orm/keyalgorithm" + "github.com/onsonr/sonr/x/did/types/orm/keycurve" + "github.com/onsonr/sonr/x/did/types/orm/keyencoding" + "github.com/onsonr/sonr/x/did/types/orm/keyrole" + "github.com/onsonr/sonr/x/did/types/orm/keytype" ) type PublicKey struct { diff --git a/internal/orm/assettype/AssetType.pkl.go b/x/did/types/orm/assettype/AssetType.pkl.go similarity index 93% rename from internal/orm/assettype/AssetType.pkl.go rename to x/did/types/orm/assettype/AssetType.pkl.go index ba491f869..fbc580b0e 100644 --- a/internal/orm/assettype/AssetType.pkl.go +++ b/x/did/types/orm/assettype/AssetType.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package assettype import ( diff --git a/internal/orm/didmethod/DIDMethod.pkl.go b/x/did/types/orm/didmethod/DIDMethod.pkl.go similarity index 94% rename from internal/orm/didmethod/DIDMethod.pkl.go rename to x/did/types/orm/didmethod/DIDMethod.pkl.go index 4d6c583d6..e7b5140e2 100644 --- a/internal/orm/didmethod/DIDMethod.pkl.go +++ b/x/did/types/orm/didmethod/DIDMethod.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package didmethod import ( diff --git a/x/did/types/orm/init.pkl.go b/x/did/types/orm/init.pkl.go new file mode 100644 index 000000000..b44425ea5 --- /dev/null +++ b/x/did/types/orm/init.pkl.go @@ -0,0 +1,17 @@ +// Code generated from Pkl module `models`. DO NOT EDIT. +package orm + +import "github.com/apple/pkl-go/pkl" + +func init() { + pkl.RegisterMapping("models", Models{}) + pkl.RegisterMapping("models#Account", Account{}) + pkl.RegisterMapping("models#Asset", Asset{}) + pkl.RegisterMapping("models#Chain", Chain{}) + pkl.RegisterMapping("models#Credential", Credential{}) + pkl.RegisterMapping("models#JWK", JWK{}) + pkl.RegisterMapping("models#Grant", Grant{}) + pkl.RegisterMapping("models#Keyshare", Keyshare{}) + pkl.RegisterMapping("models#PublicKey", PublicKey{}) + pkl.RegisterMapping("models#Profile", Profile{}) +} diff --git a/internal/orm/keyalgorithm/KeyAlgorithm.pkl.go b/x/did/types/orm/keyalgorithm/KeyAlgorithm.pkl.go similarity index 94% rename from internal/orm/keyalgorithm/KeyAlgorithm.pkl.go rename to x/did/types/orm/keyalgorithm/KeyAlgorithm.pkl.go index 16f47ac66..68a875097 100644 --- a/internal/orm/keyalgorithm/KeyAlgorithm.pkl.go +++ b/x/did/types/orm/keyalgorithm/KeyAlgorithm.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keyalgorithm import ( diff --git a/internal/orm/keycurve/KeyCurve.pkl.go b/x/did/types/orm/keycurve/KeyCurve.pkl.go similarity index 95% rename from internal/orm/keycurve/KeyCurve.pkl.go rename to x/did/types/orm/keycurve/KeyCurve.pkl.go index 773b59ab1..1b8acf64a 100644 --- a/internal/orm/keycurve/KeyCurve.pkl.go +++ b/x/did/types/orm/keycurve/KeyCurve.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keycurve import ( diff --git a/internal/orm/keyencoding/KeyEncoding.pkl.go b/x/did/types/orm/keyencoding/KeyEncoding.pkl.go similarity index 92% rename from internal/orm/keyencoding/KeyEncoding.pkl.go rename to x/did/types/orm/keyencoding/KeyEncoding.pkl.go index dab253554..15a80c3c4 100644 --- a/internal/orm/keyencoding/KeyEncoding.pkl.go +++ b/x/did/types/orm/keyencoding/KeyEncoding.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keyencoding import ( diff --git a/internal/orm/keyrole/KeyRole.pkl.go b/x/did/types/orm/keyrole/KeyRole.pkl.go similarity index 93% rename from internal/orm/keyrole/KeyRole.pkl.go rename to x/did/types/orm/keyrole/KeyRole.pkl.go index ee5437cee..21d26a099 100644 --- a/internal/orm/keyrole/KeyRole.pkl.go +++ b/x/did/types/orm/keyrole/KeyRole.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keyrole import ( diff --git a/internal/orm/keysharerole/KeyShareRole.pkl.go b/x/did/types/orm/keysharerole/KeyShareRole.pkl.go similarity index 92% rename from internal/orm/keysharerole/KeyShareRole.pkl.go rename to x/did/types/orm/keysharerole/KeyShareRole.pkl.go index 84394745e..846c411df 100644 --- a/internal/orm/keysharerole/KeyShareRole.pkl.go +++ b/x/did/types/orm/keysharerole/KeyShareRole.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keysharerole import ( diff --git a/internal/orm/keytype/KeyType.pkl.go b/x/did/types/orm/keytype/KeyType.pkl.go similarity index 94% rename from internal/orm/keytype/KeyType.pkl.go rename to x/did/types/orm/keytype/KeyType.pkl.go index d3f9808ad..d7ed78d27 100644 --- a/internal/orm/keytype/KeyType.pkl.go +++ b/x/did/types/orm/keytype/KeyType.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package keytype import ( diff --git a/internal/orm/permissiongrant/PermissionGrant.pkl.go b/x/did/types/orm/permissiongrant/PermissionGrant.pkl.go similarity index 94% rename from internal/orm/permissiongrant/PermissionGrant.pkl.go rename to x/did/types/orm/permissiongrant/PermissionGrant.pkl.go index bdeea225f..c21195185 100644 --- a/internal/orm/permissiongrant/PermissionGrant.pkl.go +++ b/x/did/types/orm/permissiongrant/PermissionGrant.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package permissiongrant import ( diff --git a/internal/orm/permissionscope/PermissionScope.pkl.go b/x/did/types/orm/permissionscope/PermissionScope.pkl.go similarity index 95% rename from internal/orm/permissionscope/PermissionScope.pkl.go rename to x/did/types/orm/permissionscope/PermissionScope.pkl.go index 2af42ee43..87756e20a 100644 --- a/internal/orm/permissionscope/PermissionScope.pkl.go +++ b/x/did/types/orm/permissionscope/PermissionScope.pkl.go @@ -1,4 +1,4 @@ -// Code generated from Pkl module `orm`. DO NOT EDIT. +// Code generated from Pkl module `models`. DO NOT EDIT. package permissionscope import ( diff --git a/x/did/types/query.pb.go b/x/did/types/query.pb.go index 7f51d14fa..0fcddd8d2 100644 --- a/x/did/types/query.pb.go +++ b/x/did/types/query.pb.go @@ -97,75 +97,6 @@ func (m *QueryRequest) GetAsset() string { return "" } -// QueryResolveResponse is the response type for the Query/Resolve RPC method. -type QueryResponse struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - Document *Document `protobuf:"bytes,3,opt,name=document,proto3" json:"document,omitempty"` - Params *Params `protobuf:"bytes,5,opt,name=params,proto3" json:"params,omitempty"` -} - -func (m *QueryResponse) Reset() { *m = QueryResponse{} } -func (m *QueryResponse) String() string { return proto.CompactTextString(m) } -func (*QueryResponse) ProtoMessage() {} -func (*QueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{1} -} -func (m *QueryResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryResponse.Merge(m, src) -} -func (m *QueryResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryResponse proto.InternalMessageInfo - -func (m *QueryResponse) GetSuccess() bool { - if m != nil { - return m.Success - } - return false -} - -func (m *QueryResponse) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -func (m *QueryResponse) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *QueryResponse) GetParams() *Params { - if m != nil { - return m.Params - } - return nil -} - // QueryParamsResponse is the response type for the Query/Params RPC method. type QueryParamsResponse struct { // params defines the parameters of the module. @@ -176,7 +107,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{2} + return fileDescriptor_ae1fa9bb626e2869, []int{1} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -222,7 +153,7 @@ func (m *QueryResolveResponse) Reset() { *m = QueryResolveResponse{} } func (m *QueryResolveResponse) String() string { return proto.CompactTextString(m) } func (*QueryResolveResponse) ProtoMessage() {} func (*QueryResolveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{3} + return fileDescriptor_ae1fa9bb626e2869, []int{2} } func (m *QueryResolveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -258,137 +189,39 @@ func (m *QueryResolveResponse) GetDocument() *Document { return nil } -// SyncRequest is the request type for the Sync RPC method. -type SyncRequest struct { - Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` -} - -func (m *SyncRequest) Reset() { *m = SyncRequest{} } -func (m *SyncRequest) String() string { return proto.CompactTextString(m) } -func (*SyncRequest) ProtoMessage() {} -func (*SyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{4} -} -func (m *SyncRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SyncRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_SyncRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *SyncRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncRequest.Merge(m, src) -} -func (m *SyncRequest) XXX_Size() int { - return m.Size() -} -func (m *SyncRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SyncRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncRequest proto.InternalMessageInfo - -func (m *SyncRequest) GetDid() string { - if m != nil { - return m.Did - } - return "" -} - -// SyncResponse is the response type for the Sync RPC method. -type SyncResponse struct { - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` -} - -func (m *SyncResponse) Reset() { *m = SyncResponse{} } -func (m *SyncResponse) String() string { return proto.CompactTextString(m) } -func (*SyncResponse) ProtoMessage() {} -func (*SyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ae1fa9bb626e2869, []int{5} -} -func (m *SyncResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SyncResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_SyncResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *SyncResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SyncResponse.Merge(m, src) -} -func (m *SyncResponse) XXX_Size() int { - return m.Size() -} -func (m *SyncResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SyncResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SyncResponse proto.InternalMessageInfo - -func (m *SyncResponse) GetSuccess() bool { - if m != nil { - return m.Success - } - return false -} - func init() { proto.RegisterType((*QueryRequest)(nil), "did.v1.QueryRequest") - proto.RegisterType((*QueryResponse)(nil), "did.v1.QueryResponse") proto.RegisterType((*QueryParamsResponse)(nil), "did.v1.QueryParamsResponse") proto.RegisterType((*QueryResolveResponse)(nil), "did.v1.QueryResolveResponse") - proto.RegisterType((*SyncRequest)(nil), "did.v1.SyncRequest") - proto.RegisterType((*SyncResponse)(nil), "did.v1.SyncResponse") } func init() { proto.RegisterFile("did/v1/query.proto", fileDescriptor_ae1fa9bb626e2869) } var fileDescriptor_ae1fa9bb626e2869 = []byte{ - // 446 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0x4f, 0x6b, 0xd4, 0x40, - 0x14, 0xdf, 0x69, 0xbb, 0xd9, 0xf6, 0x75, 0xab, 0xe5, 0x35, 0x48, 0x58, 0x4b, 0x94, 0x39, 0x48, - 0x0f, 0x92, 0xa1, 0xf5, 0xaa, 0x20, 0xd2, 0xa3, 0x07, 0x1b, 0x6f, 0x9e, 0x4c, 0x33, 0x43, 0x1c, - 0xda, 0x9d, 0x49, 0x33, 0xc9, 0x62, 0x10, 0x2f, 0x7e, 0x02, 0x41, 0xfc, 0x4e, 0x1e, 0x0b, 0x5e, - 0x3c, 0xca, 0xae, 0x27, 0x3f, 0x85, 0x64, 0x66, 0x52, 0x77, 0x85, 0xba, 0x97, 0x65, 0xdf, 0xef, - 0xbd, 0xf7, 0xfb, 0xf3, 0x32, 0x80, 0x5c, 0x72, 0x36, 0x3b, 0x66, 0x57, 0x8d, 0xa8, 0xda, 0xa4, - 0xac, 0x74, 0xad, 0x31, 0xe0, 0x92, 0x27, 0xb3, 0xe3, 0x49, 0xe8, 0x7b, 0x85, 0x50, 0xc2, 0x48, - 0xe3, 0xba, 0x93, 0xc3, 0x42, 0xeb, 0xe2, 0x52, 0xb0, 0xac, 0x94, 0x2c, 0x53, 0x4a, 0xd7, 0x59, - 0x2d, 0xb5, 0xf2, 0x5d, 0xfa, 0x16, 0xc6, 0x67, 0x1d, 0x55, 0x2a, 0xae, 0x1a, 0x61, 0x6a, 0xdc, - 0x87, 0x4d, 0x2e, 0x79, 0x44, 0x1e, 0x92, 0xa3, 0x9d, 0xb4, 0xfb, 0x8b, 0xf7, 0x20, 0xd0, 0x95, - 0x2c, 0xa4, 0x8a, 0x36, 0x2c, 0xe8, 0xab, 0x6e, 0xf2, 0x42, 0xb4, 0xd1, 0xa6, 0x9b, 0xbc, 0x10, - 0x2d, 0x86, 0x30, 0xcc, 0x8c, 0x11, 0x75, 0xb4, 0x65, 0x31, 0x57, 0xd0, 0xaf, 0x04, 0xf6, 0xbc, - 0x84, 0x29, 0xb5, 0x32, 0x02, 0x23, 0x18, 0x99, 0x26, 0xcf, 0x85, 0x31, 0x56, 0x67, 0x3b, 0xed, - 0xcb, 0x8e, 0xc1, 0x06, 0xf3, 0x52, 0xae, 0xc0, 0xc7, 0xb0, 0xcd, 0x75, 0xde, 0x4c, 0x85, 0xaa, - 0xad, 0xdc, 0xee, 0xc9, 0x7e, 0xe2, 0x22, 0x27, 0xa7, 0x1e, 0x4f, 0x6f, 0x26, 0xf0, 0x11, 0x04, - 0x65, 0x56, 0x65, 0x53, 0x13, 0x0d, 0xed, 0xec, 0x9d, 0x7e, 0xf6, 0x95, 0x45, 0x53, 0xdf, 0xa5, - 0xcf, 0xe0, 0xc0, 0xda, 0xf2, 0x70, 0x6f, 0xee, 0xef, 0x3a, 0xf9, 0xef, 0xfa, 0x29, 0x84, 0x7d, - 0x2a, 0x7d, 0x39, 0x13, 0x37, 0xfb, 0xcb, 0x66, 0xc9, 0x3a, 0xb3, 0xf4, 0x01, 0xec, 0xbe, 0x6e, - 0x55, 0x7e, 0xeb, 0xf5, 0xe9, 0x11, 0x8c, 0xdd, 0xc0, 0xba, 0xdb, 0x9d, 0xfc, 0x26, 0x30, 0xb4, - 0x8e, 0xf0, 0x25, 0x04, 0xce, 0x2c, 0x86, 0xbd, 0xf4, 0xf2, 0x37, 0x9e, 0xdc, 0x5f, 0x41, 0x57, - 0xf3, 0xd3, 0xbb, 0x9f, 0xbe, 0xff, 0xfa, 0xb2, 0xb1, 0x83, 0x23, 0xe6, 0x82, 0xe2, 0x19, 0x8c, - 0x7c, 0xc6, 0x5b, 0xe8, 0x0e, 0xff, 0x41, 0x57, 0xee, 0x41, 0xd1, 0xf2, 0x8d, 0x11, 0x58, 0xf7, - 0x3a, 0x3f, 0x70, 0xc9, 0x3f, 0xe2, 0x73, 0xd8, 0xea, 0x42, 0xe1, 0x41, 0xbf, 0xb9, 0x74, 0x83, - 0x49, 0xb8, 0x0a, 0x7a, 0x9a, 0x3d, 0x4b, 0x33, 0xa2, 0x43, 0x66, 0x5a, 0x95, 0xbf, 0x78, 0xfa, - 0x6d, 0x1e, 0x93, 0xeb, 0x79, 0x4c, 0x7e, 0xce, 0x63, 0xf2, 0x79, 0x11, 0x0f, 0xae, 0x17, 0xf1, - 0xe0, 0xc7, 0x22, 0x1e, 0xbc, 0xa1, 0x85, 0xac, 0xdf, 0x35, 0xe7, 0x49, 0xae, 0xa7, 0x4c, 0x2b, - 0xa3, 0x55, 0xc5, 0xec, 0xcf, 0x7b, 0xab, 0x5f, 0xb7, 0xa5, 0x30, 0xe7, 0x81, 0x7d, 0xfb, 0x4f, - 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x31, 0x4b, 0x75, 0xe8, 0x4d, 0x03, 0x00, 0x00, + // 362 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4e, 0xea, 0x40, + 0x14, 0xa5, 0xf0, 0x28, 0x8f, 0x79, 0xe4, 0x3d, 0x32, 0xaf, 0x31, 0x0d, 0x92, 0xc6, 0x74, 0x61, + 0x5c, 0x98, 0x4e, 0xc0, 0xad, 0x6e, 0x0c, 0x4b, 0x17, 0xd2, 0xa5, 0x2b, 0x0b, 0x73, 0x53, 0x27, + 0xc0, 0x4c, 0xe9, 0x4c, 0x89, 0x8d, 0x71, 0xe3, 0x17, 0x98, 0xf8, 0x13, 0x7e, 0x8a, 0x4b, 0x12, + 0x37, 0x2e, 0x0d, 0xf8, 0x21, 0xa6, 0xd3, 0x81, 0x88, 0x89, 0x9b, 0xa6, 0xf7, 0x9c, 0x73, 0xcf, + 0x3d, 0x77, 0x2e, 0xc2, 0x94, 0x51, 0xb2, 0xe8, 0x91, 0x79, 0x06, 0x69, 0x1e, 0x24, 0xa9, 0x50, + 0x02, 0xdb, 0x94, 0xd1, 0x60, 0xd1, 0xeb, 0x38, 0x86, 0x8b, 0x81, 0x83, 0x64, 0xb2, 0x64, 0x3b, + 0xdd, 0x58, 0x88, 0x78, 0x0a, 0x24, 0x4a, 0x18, 0x89, 0x38, 0x17, 0x2a, 0x52, 0x4c, 0x70, 0xc3, + 0xfa, 0xd7, 0xa8, 0x35, 0x2c, 0xac, 0x42, 0x98, 0x67, 0x20, 0x15, 0x6e, 0xa3, 0x1a, 0x65, 0xd4, + 0xb5, 0x0e, 0xac, 0xa3, 0x66, 0x58, 0xfc, 0xe2, 0x3d, 0x64, 0x8b, 0x94, 0xc5, 0x8c, 0xbb, 0x55, + 0x0d, 0x9a, 0xaa, 0x50, 0x4e, 0x20, 0x77, 0x6b, 0xa5, 0x72, 0x02, 0x39, 0x76, 0x50, 0x3d, 0x92, + 0x12, 0x94, 0xfb, 0x4b, 0x63, 0x65, 0xe1, 0x9f, 0xa1, 0xff, 0x7a, 0xc2, 0x65, 0x94, 0x46, 0x33, + 0x19, 0x82, 0x4c, 0x04, 0x97, 0x80, 0x0f, 0x91, 0x9d, 0x68, 0x44, 0xcf, 0xfa, 0xd3, 0xff, 0x1b, + 0x94, 0x5b, 0x04, 0x46, 0x67, 0x58, 0x7f, 0x80, 0x1c, 0x13, 0x50, 0x8a, 0xe9, 0x02, 0xb6, 0xfd, + 0xc7, 0xe8, 0x37, 0x15, 0xe3, 0x6c, 0x06, 0x5c, 0x19, 0x87, 0xf6, 0xc6, 0x61, 0x60, 0xf0, 0x70, + 0xab, 0xe8, 0x3f, 0x5b, 0xa8, 0xae, 0x6d, 0xf0, 0x05, 0xb2, 0xcb, 0x09, 0xd8, 0xd9, 0xe8, 0xbf, + 0x3e, 0x40, 0x67, 0x7f, 0x07, 0xdd, 0x0d, 0xed, 0xff, 0x7b, 0x78, 0xfd, 0x78, 0xaa, 0x36, 0x71, + 0x83, 0x94, 0xe9, 0xf0, 0x10, 0x35, 0x4c, 0xb0, 0x1f, 0xec, 0xba, 0xdf, 0xd0, 0x9d, 0x25, 0x7c, + 0xac, 0xfd, 0x5a, 0x18, 0x91, 0xe2, 0x74, 0x77, 0x94, 0xd1, 0xfb, 0xf3, 0xd3, 0x97, 0x95, 0x67, + 0x2d, 0x57, 0x9e, 0xf5, 0xbe, 0xf2, 0xac, 0xc7, 0xb5, 0x57, 0x59, 0xae, 0xbd, 0xca, 0xdb, 0xda, + 0xab, 0x5c, 0xf9, 0x31, 0x53, 0x37, 0xd9, 0x28, 0x18, 0x8b, 0x19, 0x11, 0x5c, 0x0a, 0x9e, 0x12, + 0xfd, 0xb9, 0xd5, 0xdd, 0x2a, 0x4f, 0x40, 0x8e, 0x6c, 0x7d, 0xd6, 0x93, 0xcf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x7d, 0xbe, 0x9f, 0x67, 0x28, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -407,8 +240,6 @@ type QueryClient interface { Params(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // Resolve queries the DID document by its id. Resolve(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResolveResponse, error) - // Sync queries the DID document by its id. And returns the required PKL information - Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) } type queryClient struct { @@ -437,23 +268,12 @@ func (c *queryClient) Resolve(ctx context.Context, in *QueryRequest, opts ...grp return out, nil } -func (c *queryClient) Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) { - out := new(SyncResponse) - err := c.cc.Invoke(ctx, "/did.v1.Query/Sync", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // QueryServer is the server API for Query service. type QueryServer interface { // Params queries all parameters of the module. Params(context.Context, *QueryRequest) (*QueryParamsResponse, error) // Resolve queries the DID document by its id. Resolve(context.Context, *QueryRequest) (*QueryResolveResponse, error) - // Sync queries the DID document by its id. And returns the required PKL information - Sync(context.Context, *SyncRequest) (*SyncResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -466,9 +286,6 @@ func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryRequest) func (*UnimplementedQueryServer) Resolve(ctx context.Context, req *QueryRequest) (*QueryResolveResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Resolve not implemented") } -func (*UnimplementedQueryServer) Sync(ctx context.Context, req *SyncRequest) (*SyncResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Sync not implemented") -} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -510,24 +327,6 @@ func _Query_Resolve_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } -func _Query_Sync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SyncRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Sync(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/did.v1.Query/Sync", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Sync(ctx, req.(*SyncRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "did.v1.Query", HandlerType: (*QueryServer)(nil), @@ -540,10 +339,6 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "Resolve", Handler: _Query_Resolve_Handler, }, - { - MethodName: "Sync", - Handler: _Query_Sync_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "did/v1/query.proto", @@ -600,70 +395,6 @@ func (m *QueryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Params != nil { - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.Document != nil { - { - size, err := m.Document.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if len(m.Query) > 0 { - i -= len(m.Query) - copy(dAtA[i:], m.Query) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Query))) - i-- - dAtA[i] = 0x12 - } - if m.Success { - i-- - if m.Success { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -734,69 +465,6 @@ func (m *QueryResolveResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *SyncRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SyncRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SyncRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Did) > 0 { - i -= len(m.Did) - copy(dAtA[i:], m.Did) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *SyncResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SyncResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SyncResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Success { - i-- - if m.Success { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -833,30 +501,6 @@ func (m *QueryRequest) Size() (n int) { return n } -func (m *QueryResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Success { - n += 2 - } - l = len(m.Query) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - if m.Document != nil { - l = m.Document.Size() - n += 1 + l + sovQuery(uint64(l)) - } - if m.Params != nil { - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - func (m *QueryParamsResponse) Size() (n int) { if m == nil { return 0 @@ -883,31 +527,6 @@ func (m *QueryResolveResponse) Size() (n int) { return n } -func (m *SyncRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Did) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *SyncResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Success { - n += 2 - } - return n -} - func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1092,180 +711,6 @@ func (m *QueryRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Success = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Query = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Document", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Document == nil { - m.Document = &Document{} - } - if err := m.Document.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Params == nil { - m.Params = &Params{} - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -1438,158 +883,6 @@ func (m *QueryResolveResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *SyncRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SyncRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SyncRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Did = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SyncResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SyncResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SyncResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Success = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/did/types/query.pb.gw.go b/x/did/types/query.pb.gw.go index 4080b92e3..224c10b85 100644 --- a/x/did/types/query.pb.gw.go +++ b/x/did/types/query.pb.gw.go @@ -141,42 +141,6 @@ func local_request_Query_Resolve_0(ctx context.Context, marshaler runtime.Marsha } -var ( - filter_Query_Sync_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Query_Sync_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SyncRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Sync_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.Sync(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Sync_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq SyncRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Sync_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.Sync(ctx, &protoReq) - return msg, metadata, err - -} - // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -229,29 +193,6 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("POST", pattern_Query_Sync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Sync_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Sync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -333,26 +274,6 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("POST", pattern_Query_Sync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Sync_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Sync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -360,14 +281,10 @@ var ( pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"params"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_Resolve_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 0}, []string{"did"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Query_Sync_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"sync"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( forward_Query_Params_0 = runtime.ForwardResponseMessage forward_Query_Resolve_0 = runtime.ForwardResponseMessage - - forward_Query_Sync_0 = runtime.ForwardResponseMessage ) diff --git a/x/did/types/state.pb.go b/x/did/types/state.pb.go index 2ae9ec672..3b9ecbf9c 100644 --- a/x/did/types/state.pb.go +++ b/x/did/types/state.pb.go @@ -90,23 +90,21 @@ func (m *Alias) GetOrigin() string { // Controller represents a Sonr DWN Vault type Controller struct { // The unique identifier of the controller - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Number uint64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` + // The unique identifier of the controller + Did string `protobuf:"bytes,2,opt,name=did,proto3" json:"did,omitempty"` // The DID of the controller - SonrAddress string `protobuf:"bytes,2,opt,name=sonr_address,json=sonrAddress,proto3" json:"sonr_address,omitempty"` + SonrAddress string `protobuf:"bytes,3,opt,name=sonr_address,json=sonrAddress,proto3" json:"sonr_address,omitempty"` // The DID of the controller - EthAddress string `protobuf:"bytes,3,opt,name=eth_address,json=ethAddress,proto3" json:"eth_address,omitempty"` + EthAddress string `protobuf:"bytes,4,opt,name=eth_address,json=ethAddress,proto3" json:"eth_address,omitempty"` // The DID of the controller - BtcAddress string `protobuf:"bytes,4,opt,name=btc_address,json=btcAddress,proto3" json:"btc_address,omitempty"` - // Aliases of the controller - Aliases []string `protobuf:"bytes,5,rep,name=aliases,proto3" json:"aliases,omitempty"` + BtcAddress string `protobuf:"bytes,5,opt,name=btc_address,json=btcAddress,proto3" json:"btc_address,omitempty"` // PubKey is the verification method - PublicKey *PubKey `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - // The vault address or identifier - VaultCid string `protobuf:"bytes,7,opt,name=vault_cid,json=vaultCid,proto3" json:"vault_cid,omitempty"` - // The Authentications of the controller - Authentication []string `protobuf:"bytes,8,rep,name=authentication,proto3" json:"authentication,omitempty"` + PublicKey []byte `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Val Keyshare + KsVal string `protobuf:"bytes,7,opt,name=ks_val,json=ksVal,proto3" json:"ks_val,omitempty"` // The Status of the claims for the controller - Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` + Claimed bool `protobuf:"varint,8,opt,name=claimed,proto3" json:"claimed,omitempty"` } func (m *Controller) Reset() { *m = Controller{} } @@ -142,9 +140,16 @@ func (m *Controller) XXX_DiscardUnknown() { var xxx_messageInfo_Controller proto.InternalMessageInfo -func (m *Controller) GetId() string { +func (m *Controller) GetNumber() uint64 { if m != nil { - return m.Id + return m.Number + } + return 0 +} + +func (m *Controller) GetDid() string { + if m != nil { + return m.Did } return "" } @@ -170,45 +175,31 @@ func (m *Controller) GetBtcAddress() string { return "" } -func (m *Controller) GetAliases() []string { - if m != nil { - return m.Aliases - } - return nil -} - -func (m *Controller) GetPublicKey() *PubKey { +func (m *Controller) GetPublicKey() []byte { if m != nil { return m.PublicKey } return nil } -func (m *Controller) GetVaultCid() string { +func (m *Controller) GetKsVal() string { if m != nil { - return m.VaultCid + return m.KsVal } return "" } -func (m *Controller) GetAuthentication() []string { +func (m *Controller) GetClaimed() bool { if m != nil { - return m.Authentication + return m.Claimed } - return nil -} - -func (m *Controller) GetStatus() string { - if m != nil { - return m.Status - } - return "" + return false } // Verification reprsents a method of verifying membership in a DID type Verification struct { // The unique identifier of the verification - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` // The controller of the verification Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` // The DIDNamespace of the verification @@ -219,7 +210,8 @@ type Verification struct { Subject string `protobuf:"bytes,5,opt,name=subject,proto3" json:"subject,omitempty"` // The public key of the verification PublicKey *PubKey `protobuf:"bytes,6,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - // The Verification Type (Authentication, Assertion, CapabilityDelegation, CapabilityInvocation) + // The Verification Type (Authentication, Assertion, CapabilityDelegation, + // CapabilityInvocation) VerificationType string `protobuf:"bytes,7,opt,name=verification_type,json=verificationType,proto3" json:"verification_type,omitempty"` } @@ -256,9 +248,9 @@ func (m *Verification) XXX_DiscardUnknown() { var xxx_messageInfo_Verification proto.InternalMessageInfo -func (m *Verification) GetId() string { +func (m *Verification) GetDid() string { if m != nil { - return m.Id + return m.Did } return "" } @@ -314,42 +306,42 @@ func init() { func init() { proto.RegisterFile("did/v1/state.proto", fileDescriptor_f44bb702879c34b4) } var fileDescriptor_f44bb702879c34b4 = []byte{ - // 557 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0xed, 0xd8, 0x79, 0x34, 0x37, 0x55, 0x70, 0x47, 0x55, 0x19, 0x15, 0x30, 0x21, 0x42, 0x55, - 0x25, 0x42, 0xac, 0xc2, 0x2e, 0x62, 0x53, 0xba, 0xac, 0x90, 0x50, 0x85, 0x58, 0xb0, 0x89, 0x6c, - 0xcf, 0x90, 0x4c, 0x9b, 0x78, 0x82, 0x67, 0x1c, 0x91, 0x9f, 0x40, 0xac, 0x59, 0xf0, 0x3d, 0x2c, - 0x2b, 0xb1, 0x61, 0x83, 0x84, 0x92, 0x3f, 0xe0, 0x0b, 0xd0, 0x3c, 0x92, 0x38, 0xed, 0x8a, 0x8d, - 0xa5, 0x7b, 0xe6, 0x78, 0xce, 0xbd, 0xe7, 0xdc, 0x01, 0x4c, 0x39, 0x8d, 0x66, 0xa7, 0x91, 0x54, - 0xb1, 0x62, 0xbd, 0x69, 0x2e, 0x94, 0xc0, 0x35, 0xca, 0x69, 0x6f, 0x76, 0x7a, 0x74, 0x3f, 0x15, - 0x72, 0x22, 0x64, 0x24, 0xf2, 0x89, 0xa6, 0x88, 0x7c, 0x62, 0x09, 0x47, 0x07, 0xee, 0xa7, 0x21, - 0xcb, 0x98, 0xe4, 0xd2, 0xa2, 0x1d, 0x01, 0xd5, 0xb3, 0x31, 0x8f, 0x25, 0x6e, 0x81, 0xc7, 0x29, - 0x41, 0x6d, 0x74, 0xd2, 0xb8, 0xf4, 0x38, 0xc5, 0x04, 0xea, 0xb2, 0x48, 0xae, 0x58, 0xaa, 0x88, - 0x67, 0xc0, 0x55, 0x89, 0x0f, 0xa1, 0x26, 0x72, 0x3e, 0xe4, 0x19, 0xf1, 0xcd, 0x81, 0xab, 0xfa, - 0x4f, 0xff, 0x7e, 0xff, 0xf9, 0xc5, 0x0f, 0xa1, 0xa2, 0x6f, 0xc2, 0x07, 0xd0, 0x72, 0x3f, 0x74, - 0xed, 0x79, 0x80, 0x08, 0x22, 0xa8, 0xf3, 0xcd, 0x07, 0x38, 0x17, 0x99, 0xca, 0xc5, 0x78, 0xcc, - 0xf2, 0x3b, 0xb2, 0x4f, 0x60, 0x4f, 0x8a, 0x2c, 0x1f, 0xc4, 0x94, 0xe6, 0x4c, 0x4a, 0xa7, 0xdd, - 0xd4, 0xd8, 0x99, 0x85, 0xf0, 0x63, 0x68, 0x32, 0x35, 0x5a, 0x33, 0x6c, 0x13, 0xc0, 0xd4, 0xa8, - 0x44, 0x48, 0x54, 0xba, 0x26, 0x54, 0x2c, 0x21, 0x51, 0xe9, 0x8a, 0x40, 0xa0, 0x1e, 0xeb, 0xa1, - 0x99, 0x24, 0xd5, 0xb6, 0xaf, 0x67, 0x73, 0x25, 0x7e, 0x0e, 0x30, 0x2d, 0x92, 0x31, 0x4f, 0x07, - 0xd7, 0x6c, 0x4e, 0x6a, 0x6d, 0x74, 0xd2, 0x7c, 0xd1, 0xea, 0x59, 0x6b, 0x7b, 0x6f, 0x8b, 0xe4, - 0x82, 0xcd, 0x2f, 0x1b, 0x96, 0x71, 0xc1, 0xe6, 0xf8, 0x01, 0x34, 0x66, 0x71, 0x31, 0x56, 0x83, - 0x94, 0x53, 0x52, 0x37, 0x3a, 0xbb, 0x06, 0x38, 0xe7, 0x14, 0x1f, 0x43, 0x2b, 0x2e, 0xd4, 0x88, - 0x65, 0x8a, 0xa7, 0xb1, 0xe2, 0x22, 0x23, 0xbb, 0x46, 0xec, 0x16, 0xaa, 0xfd, 0xd4, 0x41, 0x16, - 0x92, 0x34, 0xac, 0x9f, 0xb6, 0xea, 0x7f, 0x32, 0x7e, 0x5e, 0x3b, 0x3f, 0xf1, 0xb6, 0x31, 0xda, - 0x4d, 0xbc, 0xbf, 0xe5, 0x44, 0xe0, 0x59, 0xa8, 0x34, 0x7b, 0xe0, 0x13, 0x84, 0xef, 0x95, 0x9a, - 0x0c, 0x2a, 0x04, 0xe1, 0x43, 0x08, 0xac, 0x44, 0x77, 0x83, 0x57, 0x09, 0x22, 0x5e, 0xe7, 0xb7, - 0x07, 0x7b, 0xef, 0x59, 0xce, 0x3f, 0xae, 0x7a, 0xbb, 0x1d, 0x4f, 0x08, 0x90, 0xae, 0xc3, 0x73, - 0xe1, 0x94, 0x10, 0xfc, 0x08, 0x80, 0x72, 0x3a, 0x98, 0x30, 0x35, 0x12, 0xd4, 0x45, 0xd3, 0xa0, - 0x9c, 0xbe, 0x31, 0x80, 0x1e, 0x95, 0x4b, 0x59, 0xb0, 0xdc, 0x85, 0xe2, 0xaa, 0xf2, 0xb2, 0x55, - 0xb7, 0x97, 0xed, 0x3f, 0x03, 0x79, 0x06, 0xfb, 0xb3, 0x52, 0xff, 0x03, 0x35, 0x9f, 0x32, 0x17, - 0x4c, 0x50, 0x3e, 0x78, 0x37, 0x9f, 0xb2, 0xfe, 0xd4, 0x18, 0x7c, 0xb5, 0x59, 0x58, 0xdb, 0x4d, - 0xd7, 0x69, 0x1b, 0x8b, 0x3b, 0xf0, 0x70, 0x33, 0x5e, 0x77, 0x33, 0x5b, 0xd7, 0x72, 0x8d, 0xe7, - 0xc7, 0xd0, 0xbe, 0x23, 0xba, 0xba, 0x64, 0xc5, 0xf3, 0x09, 0x22, 0x95, 0xd7, 0xaf, 0x7e, 0x2c, - 0x42, 0x74, 0xb3, 0x08, 0xd1, 0x9f, 0x45, 0x88, 0xbe, 0x2e, 0xc3, 0x9d, 0x9b, 0x65, 0xb8, 0xf3, - 0x6b, 0x19, 0xee, 0x7c, 0xe8, 0x0c, 0xb9, 0x1a, 0x15, 0x49, 0x2f, 0x15, 0x93, 0x48, 0x64, 0x3a, - 0xe9, 0xc8, 0x7c, 0x3e, 0x47, 0xfa, 0xd9, 0xea, 0x1b, 0x65, 0x52, 0x33, 0x4f, 0xf6, 0xe5, 0xbf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x53, 0x80, 0x70, 0xff, 0x03, 0x00, 0x00, + // 550 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xcf, 0x8e, 0xd3, 0x3e, + 0x10, 0xc7, 0xd7, 0xe9, 0x9f, 0xdd, 0x4e, 0xab, 0x2a, 0x6b, 0xed, 0xef, 0x87, 0xb5, 0x82, 0x50, + 0x2a, 0x84, 0x2a, 0x51, 0x1a, 0x2d, 0xdc, 0x2a, 0x2e, 0x0b, 0xc7, 0x15, 0x12, 0x2a, 0x68, 0x25, + 0xb8, 0x54, 0x49, 0x6c, 0x5a, 0xd3, 0x24, 0x2e, 0xb1, 0x53, 0xd1, 0x97, 0x40, 0x3c, 0x01, 0x8f, + 0x83, 0x38, 0xae, 0xc4, 0x85, 0xe3, 0xaa, 0x7d, 0x03, 0x9e, 0x00, 0xd9, 0x71, 0xda, 0x54, 0x7b, + 0x89, 0x32, 0x5f, 0x7f, 0x3d, 0xe3, 0xf9, 0x78, 0x0c, 0x98, 0x72, 0xea, 0xaf, 0x2e, 0x7c, 0xa9, + 0x02, 0xc5, 0x46, 0xcb, 0x4c, 0x28, 0x81, 0x9b, 0x94, 0xd3, 0xd1, 0xea, 0xe2, 0xfc, 0x5e, 0x24, + 0x64, 0x22, 0xa4, 0x2f, 0xb2, 0x44, 0x5b, 0x44, 0x96, 0x14, 0x86, 0xf3, 0x33, 0xbb, 0x69, 0xc6, + 0x52, 0x26, 0xb9, 0x2c, 0xd4, 0xbe, 0x80, 0xc6, 0x65, 0xcc, 0x03, 0x89, 0xbb, 0xe0, 0x70, 0x4a, + 0x50, 0x0f, 0x0d, 0x5a, 0x13, 0x87, 0x53, 0x4c, 0xe0, 0x58, 0xe6, 0xe1, 0x67, 0x16, 0x29, 0xe2, + 0x18, 0xb1, 0x0c, 0xf1, 0xff, 0xd0, 0x14, 0x19, 0x9f, 0xf1, 0x94, 0xd4, 0xcc, 0x82, 0x8d, 0xc6, + 0x8f, 0xff, 0xfe, 0xf8, 0xfd, 0xad, 0xe6, 0x41, 0x5d, 0x67, 0xc2, 0x67, 0xd0, 0xb5, 0x1b, 0x86, + 0xc5, 0xba, 0x8b, 0x08, 0x22, 0xa8, 0xff, 0xd3, 0x01, 0x78, 0x2d, 0x52, 0x95, 0x89, 0x38, 0x66, + 0x99, 0x4e, 0x96, 0xe6, 0x49, 0xc8, 0x32, 0x53, 0xba, 0x3e, 0xb1, 0x11, 0x76, 0xa1, 0x46, 0x39, + 0xb5, 0xa5, 0xf5, 0x2f, 0x7e, 0x04, 0x1d, 0x29, 0xd2, 0x6c, 0x1a, 0x50, 0x9a, 0x31, 0x29, 0x6d, + 0xf1, 0xb6, 0xd6, 0x2e, 0x0b, 0x09, 0x3f, 0x84, 0x36, 0x53, 0xf3, 0x9d, 0xa3, 0x6e, 0x1c, 0xc0, + 0xd4, 0xbc, 0x62, 0x08, 0x55, 0xb4, 0x33, 0x34, 0x0a, 0x43, 0xa8, 0xa2, 0xd2, 0xf0, 0x00, 0x60, + 0x99, 0x87, 0x31, 0x8f, 0xa6, 0x0b, 0xb6, 0x26, 0xcd, 0x1e, 0x1a, 0x74, 0x26, 0xad, 0x42, 0xb9, + 0x62, 0x6b, 0xfc, 0x1f, 0x34, 0x17, 0x72, 0xba, 0x0a, 0x62, 0x72, 0x6c, 0xb6, 0x36, 0x16, 0xf2, + 0x3a, 0x88, 0x35, 0xab, 0x28, 0x0e, 0x78, 0xc2, 0x28, 0x39, 0xe9, 0xa1, 0xc1, 0xc9, 0xa4, 0x0c, + 0xc7, 0x1f, 0x0c, 0x93, 0x77, 0x00, 0x65, 0x9b, 0x2e, 0xc2, 0xf8, 0xb0, 0x11, 0xcd, 0x05, 0x9f, + 0x1e, 0x9c, 0xdc, 0x75, 0x0a, 0xa9, 0x72, 0x56, 0xb7, 0x46, 0x10, 0x6e, 0x19, 0x28, 0x6e, 0x9d, + 0x20, 0xe2, 0xf4, 0x6f, 0x1d, 0xe8, 0x5c, 0xb3, 0x8c, 0x7f, 0xe2, 0x51, 0xa0, 0xb8, 0x48, 0x4b, + 0x64, 0x68, 0x8f, 0xcc, 0x03, 0x88, 0x76, 0xa8, 0x2d, 0xcb, 0x8a, 0xa2, 0xbb, 0xa5, 0x9c, 0x4e, + 0x13, 0xa6, 0xe6, 0x82, 0x5a, 0xa0, 0x2d, 0xca, 0xe9, 0x1b, 0x23, 0xe8, 0xbb, 0xe1, 0x52, 0xe6, + 0x2c, 0xb3, 0x24, 0x6d, 0x54, 0x1d, 0x8d, 0xc6, 0xe1, 0x68, 0x3c, 0xbb, 0x83, 0xaf, 0xfd, 0xbc, + 0x3b, 0x2a, 0x26, 0x73, 0xf4, 0x36, 0x0f, 0xaf, 0xd8, 0xba, 0x8a, 0xf3, 0x29, 0x9c, 0xae, 0x2a, + 0x1d, 0x4c, 0xd5, 0x7a, 0xc9, 0x2c, 0x59, 0xb7, 0xba, 0xf0, 0x7e, 0xbd, 0x64, 0xe3, 0x2f, 0x06, + 0xe5, 0x02, 0x1a, 0xa6, 0x4d, 0x3d, 0x5f, 0xc5, 0x71, 0x86, 0xb6, 0xb8, 0xe1, 0xd8, 0x87, 0xfb, + 0xfb, 0xfe, 0x86, 0xfb, 0xe6, 0x86, 0x85, 0xd7, 0x80, 0x7d, 0x02, 0xbd, 0x3b, 0x55, 0xcb, 0x24, + 0xa5, 0xaf, 0x46, 0x10, 0xa9, 0xbf, 0x7a, 0xf9, 0x6b, 0xe3, 0xa1, 0x9b, 0x8d, 0x87, 0x6e, 0x37, + 0x1e, 0xfa, 0xbe, 0xf5, 0x8e, 0x6e, 0xb6, 0xde, 0xd1, 0x9f, 0xad, 0x77, 0xf4, 0xb1, 0x3f, 0xe3, + 0x6a, 0x9e, 0x87, 0xa3, 0x48, 0x24, 0xbe, 0x48, 0xf5, 0x75, 0xfa, 0xe6, 0xf3, 0xd5, 0xd7, 0xaf, + 0x4c, 0x67, 0x94, 0x61, 0xd3, 0xbc, 0xb0, 0x17, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x9f, + 0x1c, 0x50, 0xae, 0x03, 0x00, 0x00, } func (m *Alias) Marshal() (dAtA []byte, err error) { @@ -416,77 +408,62 @@ func (m *Controller) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Status) > 0 { - i -= len(m.Status) - copy(dAtA[i:], m.Status) - i = encodeVarintState(dAtA, i, uint64(len(m.Status))) + if m.Claimed { i-- - dAtA[i] = 0x4a - } - if len(m.Authentication) > 0 { - for iNdEx := len(m.Authentication) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Authentication[iNdEx]) - copy(dAtA[i:], m.Authentication[iNdEx]) - i = encodeVarintState(dAtA, i, uint64(len(m.Authentication[iNdEx]))) - i-- - dAtA[i] = 0x42 + if m.Claimed { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } + i-- + dAtA[i] = 0x40 } - if len(m.VaultCid) > 0 { - i -= len(m.VaultCid) - copy(dAtA[i:], m.VaultCid) - i = encodeVarintState(dAtA, i, uint64(len(m.VaultCid))) + if len(m.KsVal) > 0 { + i -= len(m.KsVal) + copy(dAtA[i:], m.KsVal) + i = encodeVarintState(dAtA, i, uint64(len(m.KsVal))) i-- dAtA[i] = 0x3a } - if m.PublicKey != nil { - { - size, err := m.PublicKey.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintState(dAtA, i, uint64(size)) - } + if len(m.PublicKey) > 0 { + i -= len(m.PublicKey) + copy(dAtA[i:], m.PublicKey) + i = encodeVarintState(dAtA, i, uint64(len(m.PublicKey))) i-- dAtA[i] = 0x32 } - if len(m.Aliases) > 0 { - for iNdEx := len(m.Aliases) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Aliases[iNdEx]) - copy(dAtA[i:], m.Aliases[iNdEx]) - i = encodeVarintState(dAtA, i, uint64(len(m.Aliases[iNdEx]))) - i-- - dAtA[i] = 0x2a - } - } if len(m.BtcAddress) > 0 { i -= len(m.BtcAddress) copy(dAtA[i:], m.BtcAddress) i = encodeVarintState(dAtA, i, uint64(len(m.BtcAddress))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a } if len(m.EthAddress) > 0 { i -= len(m.EthAddress) copy(dAtA[i:], m.EthAddress) i = encodeVarintState(dAtA, i, uint64(len(m.EthAddress))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 } if len(m.SonrAddress) > 0 { i -= len(m.SonrAddress) copy(dAtA[i:], m.SonrAddress) i = encodeVarintState(dAtA, i, uint64(len(m.SonrAddress))) i-- + dAtA[i] = 0x1a + } + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintState(dAtA, i, uint64(len(m.Did))) + i-- dAtA[i] = 0x12 } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintState(dAtA, i, uint64(len(m.Id))) + if m.Number != 0 { + i = encodeVarintState(dAtA, i, uint64(m.Number)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } return len(dAtA) - i, nil } @@ -558,10 +535,10 @@ func (m *Verification) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintState(dAtA, i, uint64(len(m.Id))) + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintState(dAtA, i, uint64(len(m.Did))) i-- dAtA[i] = 0xa } @@ -606,7 +583,10 @@ func (m *Controller) Size() (n int) { } var l int _ = l - l = len(m.Id) + if m.Number != 0 { + n += 1 + sovState(uint64(m.Number)) + } + l = len(m.Did) if l > 0 { n += 1 + l + sovState(uint64(l)) } @@ -622,30 +602,17 @@ func (m *Controller) Size() (n int) { if l > 0 { n += 1 + l + sovState(uint64(l)) } - if len(m.Aliases) > 0 { - for _, s := range m.Aliases { - l = len(s) - n += 1 + l + sovState(uint64(l)) - } - } - if m.PublicKey != nil { - l = m.PublicKey.Size() - n += 1 + l + sovState(uint64(l)) - } - l = len(m.VaultCid) + l = len(m.PublicKey) if l > 0 { n += 1 + l + sovState(uint64(l)) } - if len(m.Authentication) > 0 { - for _, s := range m.Authentication { - l = len(s) - n += 1 + l + sovState(uint64(l)) - } - } - l = len(m.Status) + l = len(m.KsVal) if l > 0 { n += 1 + l + sovState(uint64(l)) } + if m.Claimed { + n += 2 + } return n } @@ -655,7 +622,7 @@ func (m *Verification) Size() (n int) { } var l int _ = l - l = len(m.Id) + l = len(m.Did) if l > 0 { n += 1 + l + sovState(uint64(l)) } @@ -868,8 +835,27 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Number", wireType) + } + m.Number = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Number |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -897,9 +883,9 @@ func (m *Controller) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SonrAddress", wireType) } @@ -931,7 +917,7 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } m.SonrAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field EthAddress", wireType) } @@ -963,7 +949,7 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } m.EthAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field BtcAddress", wireType) } @@ -995,43 +981,11 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } m.BtcAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Aliases", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowState - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthState - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthState - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Aliases = append(m.Aliases, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowState @@ -1041,31 +995,29 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return ErrInvalidLengthState } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen if postIndex < 0 { return ErrInvalidLengthState } if postIndex > l { return io.ErrUnexpectedEOF } + m.PublicKey = append(m.PublicKey[:0], dAtA[iNdEx:postIndex]...) if m.PublicKey == nil { - m.PublicKey = &PubKey{} - } - if err := m.PublicKey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.PublicKey = []byte{} } iNdEx = postIndex case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VaultCid", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KsVal", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1093,13 +1045,13 @@ func (m *Controller) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.VaultCid = string(dAtA[iNdEx:postIndex]) + m.KsVal = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authentication", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Claimed", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowState @@ -1109,56 +1061,12 @@ func (m *Controller) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthState - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthState - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authentication = append(m.Authentication, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowState - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthState - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthState - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Status = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex + m.Claimed = bool(v != 0) default: iNdEx = preIndex skippy, err := skipState(dAtA[iNdEx:]) @@ -1211,7 +1119,7 @@ func (m *Verification) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1239,7 +1147,7 @@ func (m *Verification) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.Did = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { diff --git a/x/did/types/tx.pb.go b/x/did/types/tx.pb.go index b2dea3f72..fb1fac3b4 100644 --- a/x/did/types/tx.pb.go +++ b/x/did/types/tx.pb.go @@ -30,143 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// MsgAllocateVault is the message type for the AllocateVault RPC. -type MsgAllocateVault struct { - // authority is the address of the service account. - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // subject is a unique human-defined identifier to associate with the vault. - Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` - // origin is the origin of the request in wildcard form. - Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` -} - -func (m *MsgAllocateVault) Reset() { *m = MsgAllocateVault{} } -func (m *MsgAllocateVault) String() string { return proto.CompactTextString(m) } -func (*MsgAllocateVault) ProtoMessage() {} -func (*MsgAllocateVault) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{0} -} -func (m *MsgAllocateVault) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAllocateVault) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAllocateVault.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAllocateVault) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAllocateVault.Merge(m, src) -} -func (m *MsgAllocateVault) XXX_Size() int { - return m.Size() -} -func (m *MsgAllocateVault) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAllocateVault.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAllocateVault proto.InternalMessageInfo - -func (m *MsgAllocateVault) GetAuthority() string { - if m != nil { - return m.Authority - } - return "" -} - -func (m *MsgAllocateVault) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *MsgAllocateVault) GetOrigin() string { - if m != nil { - return m.Origin - } - return "" -} - -// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. -type MsgAllocateVaultResponse struct { - // CID is the content identifier of the vault. - Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` - // ExpiryBlock is the block number at which the vault will expire. - ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` - // RegistrationOptions is a json string of the PublicKeyCredentialCreationOptions for WebAuthn - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - // IsLocalhost is a flag to indicate if the vault is localhost - Localhost bool `protobuf:"varint,4,opt,name=localhost,proto3" json:"localhost,omitempty"` -} - -func (m *MsgAllocateVaultResponse) Reset() { *m = MsgAllocateVaultResponse{} } -func (m *MsgAllocateVaultResponse) String() string { return proto.CompactTextString(m) } -func (*MsgAllocateVaultResponse) ProtoMessage() {} -func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{1} -} -func (m *MsgAllocateVaultResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAllocateVaultResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAllocateVaultResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAllocateVaultResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAllocateVaultResponse.Merge(m, src) -} -func (m *MsgAllocateVaultResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgAllocateVaultResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAllocateVaultResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAllocateVaultResponse proto.InternalMessageInfo - -func (m *MsgAllocateVaultResponse) GetCid() string { - if m != nil { - return m.Cid - } - return "" -} - -func (m *MsgAllocateVaultResponse) GetExpiryBlock() int64 { - if m != nil { - return m.ExpiryBlock - } - return 0 -} - -func (m *MsgAllocateVaultResponse) GetToken() string { - if m != nil { - return m.Token - } - return "" -} - -func (m *MsgAllocateVaultResponse) GetLocalhost() bool { - if m != nil { - return m.Localhost - } - return false -} - // MsgRegisterController is the message type for the InitializeController RPC. type MsgRegisterController struct { // authority is the address of the governance account. @@ -175,7 +38,8 @@ type MsgRegisterController struct { Assertions [][]byte `protobuf:"bytes,2,rep,name=assertions,proto3" json:"assertions,omitempty"` // Keyshares is the list of keyshares to initialize the controller with. Keyshares [][]byte `protobuf:"bytes,3,rep,name=keyshares,proto3" json:"keyshares,omitempty"` - // Verifications is the list of verifications to initialize the controller with. + // Verifications is the list of verifications to initialize the controller + // with. Verifications [][]byte `protobuf:"bytes,4,rep,name=verifications,proto3" json:"verifications,omitempty"` } @@ -183,7 +47,7 @@ func (m *MsgRegisterController) Reset() { *m = MsgRegisterController{} } func (m *MsgRegisterController) String() string { return proto.CompactTextString(m) } func (*MsgRegisterController) ProtoMessage() {} func (*MsgRegisterController) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{2} + return fileDescriptor_d73284df019ff211, []int{0} } func (m *MsgRegisterController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -240,9 +104,11 @@ func (m *MsgRegisterController) GetVerifications() [][]byte { return nil } -// MsgRegisterControllerResponse is the response type for the InitializeController RPC. +// MsgRegisterControllerResponse is the response type for the +// InitializeController RPC. type MsgRegisterControllerResponse struct { - // Success returns true if the specified cid is valid and not already encrypted. + // Success returns true if the specified cid is valid and not already + // encrypted. Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // Controller is the address of the initialized controller. Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` @@ -254,7 +120,7 @@ func (m *MsgRegisterControllerResponse) Reset() { *m = MsgRegisterContro func (m *MsgRegisterControllerResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterControllerResponse) ProtoMessage() {} func (*MsgRegisterControllerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{3} + return fileDescriptor_d73284df019ff211, []int{1} } func (m *MsgRegisterControllerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -318,7 +184,7 @@ func (m *MsgExecuteTx) Reset() { *m = MsgExecuteTx{} } func (m *MsgExecuteTx) String() string { return proto.CompactTextString(m) } func (*MsgExecuteTx) ProtoMessage() {} func (*MsgExecuteTx) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{4} + return fileDescriptor_d73284df019ff211, []int{2} } func (m *MsgExecuteTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -378,7 +244,7 @@ func (m *MsgExecuteTxResponse) Reset() { *m = MsgExecuteTxResponse{} } func (m *MsgExecuteTxResponse) String() string { return proto.CompactTextString(m) } func (*MsgExecuteTxResponse) ProtoMessage() {} func (*MsgExecuteTxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{5} + return fileDescriptor_d73284df019ff211, []int{3} } func (m *MsgExecuteTxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -437,7 +303,7 @@ func (m *MsgAuthorizeService) Reset() { *m = MsgAuthorizeService{} } func (m *MsgAuthorizeService) String() string { return proto.CompactTextString(m) } func (*MsgAuthorizeService) ProtoMessage() {} func (*MsgAuthorizeService) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{6} + return fileDescriptor_d73284df019ff211, []int{4} } func (m *MsgAuthorizeService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -494,7 +360,8 @@ func (m *MsgAuthorizeService) GetToken() string { return "" } -// MsgAuthorizeServiceResponse is the response type for the AuthorizeService RPC. +// MsgAuthorizeServiceResponse is the response type for the AuthorizeService +// RPC. type MsgAuthorizeServiceResponse struct { Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` @@ -504,7 +371,7 @@ func (m *MsgAuthorizeServiceResponse) Reset() { *m = MsgAuthorizeService func (m *MsgAuthorizeServiceResponse) String() string { return proto.CompactTextString(m) } func (*MsgAuthorizeServiceResponse) ProtoMessage() {} func (*MsgAuthorizeServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{7} + return fileDescriptor_d73284df019ff211, []int{5} } func (m *MsgAuthorizeServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -551,7 +418,8 @@ func (m *MsgAuthorizeServiceResponse) GetToken() string { type MsgRegisterService struct { // authority is the address of the governance account. Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"` - // origin is the origin of the request in wildcard form. Requires valid TXT record in DNS. + // origin is the origin of the request in wildcard form. Requires valid TXT + // record in DNS. Service *Service `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"` } @@ -559,7 +427,7 @@ func (m *MsgRegisterService) Reset() { *m = MsgRegisterService{} } func (m *MsgRegisterService) String() string { return proto.CompactTextString(m) } func (*MsgRegisterService) ProtoMessage() {} func (*MsgRegisterService) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{8} + return fileDescriptor_d73284df019ff211, []int{6} } func (m *MsgRegisterService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -612,7 +480,7 @@ func (m *MsgRegisterServiceResponse) Reset() { *m = MsgRegisterServiceRe func (m *MsgRegisterServiceResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterServiceResponse) ProtoMessage() {} func (*MsgRegisterServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{9} + return fileDescriptor_d73284df019ff211, []int{7} } func (m *MsgRegisterServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -671,7 +539,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{10} + return fileDescriptor_d73284df019ff211, []int{8} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -732,7 +600,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d73284df019ff211, []int{11} + return fileDescriptor_d73284df019ff211, []int{9} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -762,8 +630,6 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgAllocateVault)(nil), "did.v1.MsgAllocateVault") - proto.RegisterType((*MsgAllocateVaultResponse)(nil), "did.v1.MsgAllocateVaultResponse") proto.RegisterType((*MsgRegisterController)(nil), "did.v1.MsgRegisterController") proto.RegisterType((*MsgRegisterControllerResponse)(nil), "did.v1.MsgRegisterControllerResponse") proto.RegisterMapType((map[string]string)(nil), "did.v1.MsgRegisterControllerResponse.AccountsEntry") @@ -782,65 +648,58 @@ func init() { func init() { proto.RegisterFile("did/v1/tx.proto", fileDescriptor_d73284df019ff211) } var fileDescriptor_d73284df019ff211 = []byte{ - // 922 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0xda, 0xa9, 0x93, 0x3c, 0x3b, 0xb1, 0x35, 0x18, 0xb2, 0xdd, 0xb6, 0x6e, 0x58, 0xa8, - 0x14, 0xaa, 0x62, 0xab, 0xa9, 0x84, 0xaa, 0x80, 0x8a, 0x12, 0x54, 0x29, 0x08, 0x19, 0xca, 0x36, - 0x70, 0xe8, 0x25, 0xda, 0xec, 0x0e, 0xeb, 0xc1, 0xf6, 0x8e, 0x35, 0x6f, 0x6c, 0xd9, 0x9c, 0xf8, - 0x73, 0x43, 0x1c, 0xf8, 0x02, 0xf0, 0x19, 0x7a, 0xe0, 0x1b, 0x70, 0xe9, 0xb1, 0xe2, 0xc4, 0x09, - 0xa1, 0xe4, 0x50, 0xf1, 0x21, 0x90, 0xd0, 0xee, 0xec, 0xae, 0xc7, 0x7f, 0x62, 0xdc, 0xe6, 0x62, - 0xed, 0xbc, 0xf7, 0xe6, 0x37, 0xbf, 0xdf, 0x9b, 0xdf, 0xbe, 0x35, 0x94, 0x7d, 0xe6, 0x37, 0x06, - 0x77, 0x1b, 0x72, 0x58, 0xef, 0x09, 0x2e, 0x39, 0x29, 0xf8, 0xcc, 0xaf, 0x0f, 0xee, 0x5a, 0xdb, - 0x1e, 0xc7, 0x2e, 0xc7, 0x46, 0x17, 0x83, 0x28, 0xdf, 0xc5, 0x40, 0x15, 0x58, 0x57, 0x55, 0xe2, - 0x24, 0x5e, 0x35, 0xd4, 0x22, 0x49, 0x55, 0x13, 0xb0, 0x80, 0x86, 0x14, 0x59, 0x16, 0x0d, 0x78, - 0xc0, 0x55, 0x75, 0xf4, 0xa4, 0xa2, 0xf6, 0x4f, 0x06, 0x54, 0x9a, 0x18, 0x1c, 0x74, 0x3a, 0xdc, - 0x73, 0x25, 0xfd, 0xd2, 0xed, 0x77, 0x24, 0x79, 0x0f, 0x36, 0xdc, 0xbe, 0x6c, 0x71, 0xc1, 0xe4, - 0xc8, 0x34, 0x76, 0x8c, 0xdd, 0x8d, 0x43, 0xf3, 0x8f, 0xdf, 0xde, 0xad, 0x26, 0xa7, 0x1c, 0xf8, - 0xbe, 0xa0, 0x88, 0x8f, 0xa5, 0x60, 0x61, 0xe0, 0x8c, 0x4b, 0x89, 0x09, 0x6b, 0xd8, 0x3f, 0xfd, - 0x9a, 0x7a, 0xd2, 0xcc, 0x45, 0xbb, 0x9c, 0x74, 0x49, 0xde, 0x80, 0x02, 0x17, 0x2c, 0x60, 0xa1, - 0x99, 0x8f, 0x13, 0xc9, 0x6a, 0x7f, 0xeb, 0xfb, 0x17, 0x4f, 0x6f, 0x8f, 0x11, 0xec, 0x1f, 0x0c, - 0x30, 0xa7, 0xe9, 0x38, 0x14, 0x7b, 0x3c, 0x44, 0x4a, 0x2a, 0x90, 0xf7, 0x98, 0xaf, 0x08, 0x39, - 0xd1, 0x23, 0x79, 0x13, 0x4a, 0x74, 0xd8, 0x63, 0x62, 0x74, 0x72, 0xda, 0xe1, 0x5e, 0x3b, 0x3e, - 0x35, 0xef, 0x14, 0x55, 0xec, 0x30, 0x0a, 0x91, 0x2a, 0x5c, 0x91, 0xbc, 0x4d, 0xd3, 0x83, 0xd5, - 0x82, 0x5c, 0x87, 0x8d, 0xe8, 0x84, 0x4e, 0x8b, 0xa3, 0x34, 0x57, 0x77, 0x8c, 0xdd, 0x75, 0x67, - 0x1c, 0xb0, 0x7f, 0x37, 0xe0, 0xf5, 0x26, 0x06, 0x0e, 0x0d, 0x18, 0x4a, 0x2a, 0x3e, 0xe2, 0xa1, - 0x14, 0xbc, 0xd3, 0xa1, 0xe2, 0x95, 0x3b, 0x53, 0x03, 0x70, 0x11, 0xa9, 0x90, 0x8c, 0x87, 0x68, - 0xe6, 0x76, 0xf2, 0xbb, 0x25, 0x47, 0x8b, 0x44, 0x7c, 0xda, 0x74, 0x84, 0x2d, 0x57, 0x50, 0x34, - 0xf3, 0x71, 0x7a, 0x1c, 0x20, 0x6f, 0xc3, 0xe6, 0x80, 0x0a, 0xf6, 0x15, 0xf3, 0x5c, 0x05, 0xb0, - 0x1a, 0x57, 0x4c, 0x06, 0x67, 0x7a, 0xf9, 0x5d, 0x0e, 0x6e, 0xcc, 0x55, 0x91, 0x35, 0x34, 0xbe, - 0x2f, 0xcf, 0xa3, 0x88, 0xb1, 0x96, 0x75, 0x27, 0x5d, 0x92, 0xfb, 0x00, 0x5e, 0x56, 0xaf, 0x2e, - 0x73, 0x81, 0x50, 0xad, 0x96, 0x7c, 0x06, 0xeb, 0xae, 0xe7, 0xf1, 0x7e, 0x28, 0x95, 0x90, 0xe2, - 0xde, 0xbd, 0xba, 0xf2, 0x72, 0x7d, 0x21, 0x99, 0xfa, 0x41, 0xb2, 0xeb, 0x61, 0x28, 0xc5, 0xc8, - 0xc9, 0x40, 0xac, 0xf7, 0x61, 0x73, 0x22, 0x15, 0xd9, 0xa0, 0x4d, 0x47, 0xa9, 0x0d, 0xda, 0x74, - 0x14, 0xdd, 0xf1, 0xc0, 0xed, 0xf4, 0x69, 0xe2, 0x3a, 0xb5, 0xd8, 0xcf, 0xdd, 0x37, 0xec, 0x7f, - 0x0d, 0x28, 0x35, 0x31, 0x78, 0x38, 0xa4, 0x5e, 0x5f, 0xd2, 0xe3, 0xe1, 0x94, 0x30, 0xe3, 0x25, - 0x84, 0x3d, 0x80, 0xf5, 0x2e, 0x45, 0x74, 0x03, 0xaa, 0x2e, 0xb0, 0xb8, 0x67, 0x6b, 0xc2, 0xb2, - 0x13, 0xea, 0xcd, 0xa4, 0x28, 0xd1, 0x91, 0xee, 0x21, 0xb7, 0x60, 0xab, 0xeb, 0x7a, 0xae, 0xe0, - 0x3c, 0x3c, 0xd1, 0x1d, 0xb9, 0x99, 0x46, 0x8f, 0xa3, 0x60, 0x24, 0x77, 0x02, 0xe1, 0xff, 0xe4, - 0x96, 0x34, 0xb9, 0xfb, 0xe5, 0xc8, 0x02, 0x1a, 0x69, 0xfb, 0x63, 0xa8, 0xea, 0xe4, 0x96, 0xb8, - 0xf9, 0x6d, 0x58, 0x93, 0xc3, 0x93, 0x96, 0x8b, 0xad, 0xa4, 0x9b, 0x05, 0x39, 0x3c, 0x72, 0xb1, - 0x65, 0xff, 0x9a, 0x83, 0xd7, 0xa2, 0x57, 0x53, 0xf9, 0xeb, 0x1b, 0xfa, 0x98, 0x8a, 0x01, 0xf3, - 0xe8, 0x25, 0x3a, 0x3a, 0x1e, 0x0a, 0x39, 0x7d, 0x28, 0x90, 0x4f, 0xa1, 0xd8, 0xa3, 0xa2, 0xcb, - 0x10, 0x63, 0xb3, 0x2b, 0x17, 0xdd, 0xd1, 0x9a, 0x3d, 0xcd, 0xa1, 0xfe, 0x68, 0x5c, 0xae, 0xda, - 0xae, 0x03, 0x8c, 0x47, 0xc0, 0xaa, 0x36, 0x02, 0xac, 0x07, 0x50, 0x99, 0xde, 0xf6, 0x32, 0xd6, - 0x9a, 0xed, 0x75, 0x13, 0xae, 0xcd, 0xe1, 0xb6, 0x44, 0xcb, 0x33, 0x7e, 0x39, 0x8d, 0x9f, 0xfd, - 0xa3, 0x01, 0x44, 0x7b, 0x63, 0x2e, 0xdf, 0xee, 0x77, 0x60, 0x0d, 0x15, 0x48, 0x7c, 0x50, 0x71, - 0xaf, 0x9c, 0xb6, 0x34, 0xa5, 0x9a, 0xe6, 0x67, 0xb5, 0x1d, 0x81, 0x35, 0xcb, 0x65, 0x09, 0x69, - 0x15, 0xc8, 0xfb, 0xcc, 0x4f, 0x84, 0x45, 0x8f, 0xf6, 0x2f, 0x06, 0x94, 0x9b, 0x18, 0x7c, 0xd1, - 0xf3, 0x5d, 0x49, 0x1f, 0xb9, 0xc2, 0xed, 0xe2, 0x2b, 0x4f, 0xd5, 0x3b, 0x50, 0xe8, 0xc5, 0x08, - 0x89, 0xa0, 0xad, 0x54, 0x90, 0xc2, 0x3d, 0x5c, 0x7d, 0xf6, 0xd7, 0xcd, 0x15, 0x27, 0xa9, 0x99, - 0xff, 0x25, 0x98, 0x99, 0x9a, 0x57, 0x61, 0x7b, 0x8a, 0x5e, 0x2a, 0x73, 0xef, 0x9f, 0x3c, 0xe4, - 0x9b, 0x18, 0x90, 0x4f, 0x60, 0x73, 0xf2, 0x7b, 0x69, 0xea, 0xde, 0xd4, 0x33, 0xd6, 0xce, 0x45, - 0x99, 0xac, 0x77, 0xc7, 0x50, 0x99, 0x79, 0xa5, 0xae, 0x2d, 0xf0, 0xba, 0xf5, 0xd6, 0x82, 0x64, - 0x86, 0xfa, 0x21, 0x6c, 0x8c, 0x67, 0x5e, 0x75, 0xde, 0x9c, 0xb2, 0xae, 0xcf, 0x8b, 0x66, 0x00, - 0x4f, 0x80, 0xcc, 0xf9, 0xfc, 0xdd, 0x58, 0x38, 0xca, 0xad, 0x5b, 0x4b, 0x4d, 0x7a, 0xf2, 0x39, - 0x94, 0xa7, 0x5d, 0x6d, 0xcd, 0xd9, 0x99, 0x0a, 0xb6, 0x2f, 0xce, 0x65, 0x90, 0x47, 0x50, 0x9a, - 0x70, 0xd4, 0xb6, 0xb6, 0x47, 0x4f, 0x58, 0x37, 0x2f, 0x48, 0xa4, 0x48, 0xd6, 0x95, 0x6f, 0x5f, - 0x3c, 0xbd, 0x6d, 0x1c, 0x7e, 0xf0, 0xec, 0xac, 0x66, 0x3c, 0x3f, 0xab, 0x19, 0x7f, 0x9f, 0xd5, - 0x8c, 0x9f, 0xcf, 0x6b, 0x2b, 0xcf, 0xcf, 0x6b, 0x2b, 0x7f, 0x9e, 0xd7, 0x56, 0x9e, 0xd8, 0x01, - 0x93, 0xad, 0xfe, 0x69, 0xdd, 0xe3, 0xdd, 0x06, 0x0f, 0x91, 0x87, 0xa2, 0x11, 0xff, 0x0c, 0x1b, - 0xd1, 0xdf, 0x2e, 0x39, 0xea, 0x51, 0x3c, 0x2d, 0xc4, 0x7f, 0xae, 0xee, 0xfd, 0x17, 0x00, 0x00, - 0xff, 0xff, 0x68, 0x43, 0x51, 0x0c, 0xd7, 0x09, 0x00, 0x00, + // 809 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0x8f, 0xe3, 0x6e, 0xda, 0xbc, 0xa4, 0x4d, 0x34, 0x04, 0x92, 0xf5, 0xee, 0x66, 0x57, 0x86, + 0x95, 0x96, 0xd5, 0xe2, 0x68, 0xb3, 0x12, 0x5a, 0x15, 0xb4, 0xa8, 0x45, 0x2b, 0x95, 0x43, 0xa0, + 0xb8, 0xe5, 0xd2, 0x4b, 0xe5, 0xda, 0x83, 0x63, 0xb5, 0xf6, 0x44, 0xf3, 0x26, 0x51, 0xc2, 0x09, + 0x38, 0x72, 0xe2, 0x03, 0x00, 0x9f, 0xa1, 0x07, 0xbe, 0x01, 0x97, 0x1e, 0x2b, 0x4e, 0x9c, 0x10, + 0x6a, 0x0f, 0xfd, 0x14, 0x48, 0xc8, 0x1e, 0xdb, 0x71, 0xfe, 0x34, 0x4d, 0xe9, 0x25, 0xf2, 0xbc, + 0xf7, 0xe6, 0x37, 0xbf, 0xdf, 0x6f, 0x9e, 0x9f, 0x03, 0x15, 0xc7, 0x73, 0x5a, 0x83, 0x97, 0x2d, + 0x31, 0x34, 0x7a, 0x9c, 0x09, 0x46, 0x0a, 0x8e, 0xe7, 0x18, 0x83, 0x97, 0x5a, 0xdd, 0x66, 0xe8, + 0x33, 0x6c, 0xf9, 0xe8, 0x86, 0x79, 0x1f, 0x5d, 0x59, 0xa0, 0xdd, 0x97, 0x89, 0xc3, 0x68, 0xd5, + 0x92, 0x8b, 0x38, 0x55, 0x8b, 0xc1, 0x5c, 0x1a, 0x50, 0xf4, 0xd2, 0xa8, 0xcb, 0x5c, 0x26, 0xab, + 0xc3, 0x27, 0x19, 0xd5, 0xff, 0x50, 0xe0, 0xdd, 0x0e, 0xba, 0x26, 0x75, 0x3d, 0x14, 0x94, 0x7f, + 0xce, 0x02, 0xc1, 0xd9, 0xc9, 0x09, 0xe5, 0xe4, 0x63, 0x28, 0x5a, 0x7d, 0xd1, 0x65, 0xdc, 0x13, + 0xa3, 0x86, 0xf2, 0x44, 0x79, 0x56, 0xdc, 0x6e, 0xfc, 0xf9, 0xfb, 0x47, 0xb5, 0xf8, 0xa8, 0x2d, + 0xc7, 0xe1, 0x14, 0x71, 0x4f, 0x70, 0x2f, 0x70, 0xcd, 0x71, 0x29, 0x69, 0x02, 0x58, 0x88, 0x94, + 0x0b, 0x8f, 0x05, 0xd8, 0xc8, 0x3f, 0x51, 0x9f, 0x95, 0xcd, 0x4c, 0x84, 0x3c, 0x84, 0xe2, 0x31, + 0x1d, 0x61, 0xd7, 0xe2, 0x14, 0x1b, 0x6a, 0x94, 0x1e, 0x07, 0xc8, 0x07, 0xb0, 0x3e, 0xa0, 0xdc, + 0xfb, 0xd6, 0xb3, 0x2d, 0x09, 0xb0, 0x12, 0x55, 0x4c, 0x06, 0x37, 0x37, 0x7e, 0xbc, 0x3a, 0x7d, + 0x3e, 0x3e, 0x53, 0xff, 0x21, 0x0f, 0x8f, 0xe6, 0xaa, 0x30, 0x29, 0xf6, 0x58, 0x80, 0x94, 0x34, + 0x60, 0x15, 0xfb, 0xb6, 0x4d, 0x11, 0x23, 0x2d, 0x6b, 0x66, 0xb2, 0x24, 0xaf, 0x01, 0xec, 0xb4, + 0xbe, 0x91, 0xbf, 0x41, 0x68, 0xa6, 0x96, 0x7c, 0x05, 0x6b, 0x96, 0x6d, 0xb3, 0x7e, 0x20, 0xa4, + 0x90, 0x52, 0xfb, 0x95, 0x21, 0xaf, 0xcd, 0x58, 0x48, 0xc6, 0xd8, 0x8a, 0x77, 0xbd, 0x0d, 0x04, + 0x1f, 0x99, 0x29, 0x88, 0xf6, 0x09, 0xac, 0x4f, 0xa4, 0x48, 0x15, 0xd4, 0x63, 0x1a, 0xbb, 0x6f, + 0x86, 0x8f, 0xa4, 0x06, 0xf7, 0x06, 0xd6, 0x49, 0x9f, 0x4a, 0xa2, 0xa6, 0x5c, 0x6c, 0xe6, 0x5f, + 0x2b, 0xfa, 0xbf, 0x0a, 0x94, 0x3b, 0xe8, 0xbe, 0x1d, 0x52, 0xbb, 0x2f, 0xe8, 0xfe, 0x70, 0x4a, + 0x98, 0x72, 0x0b, 0x61, 0x6f, 0x60, 0xcd, 0xa7, 0x88, 0x96, 0x4b, 0xe5, 0x05, 0x96, 0xda, 0x7a, + 0x46, 0x58, 0x7a, 0x82, 0xd1, 0x89, 0x8b, 0x62, 0x1d, 0xc9, 0x1e, 0xf2, 0x14, 0x36, 0x7c, 0xcb, + 0xb6, 0x38, 0x63, 0xc1, 0xa1, 0x60, 0xc7, 0x34, 0x68, 0xa8, 0x11, 0xdb, 0xf5, 0x24, 0xba, 0x1f, + 0x06, 0x43, 0xb9, 0x13, 0x08, 0x37, 0xc9, 0x2d, 0x67, 0xe4, 0x6e, 0x56, 0xc2, 0x16, 0xc8, 0x90, + 0xd6, 0xbf, 0x80, 0x5a, 0x96, 0xdc, 0x12, 0x37, 0x5f, 0x87, 0x55, 0x31, 0x3c, 0xec, 0x5a, 0xd8, + 0x8d, 0xdd, 0x2c, 0x88, 0xe1, 0x8e, 0x85, 0x5d, 0xfd, 0xb7, 0x3c, 0xbc, 0xd3, 0x41, 0x77, 0x4b, + 0xf6, 0xd7, 0x77, 0x74, 0x8f, 0xf2, 0x81, 0x67, 0xd3, 0x3b, 0x38, 0xfa, 0x1e, 0x14, 0x18, 0xf7, + 0x5c, 0x2f, 0x48, 0x4e, 0x92, 0x2b, 0xf2, 0x25, 0x94, 0x7a, 0x94, 0xfb, 0x1e, 0x62, 0xd4, 0xec, + 0xb2, 0x8b, 0x5e, 0x64, 0xcc, 0x9e, 0xe6, 0x60, 0xec, 0x8e, 0xcb, 0xa5, 0xed, 0x59, 0x80, 0xd0, + 0x2f, 0x69, 0xf8, 0x8a, 0x6c, 0x8f, 0x68, 0xa1, 0xbd, 0x81, 0xea, 0xf4, 0xb6, 0xdb, 0xb4, 0xd6, + 0xac, 0xd7, 0x1d, 0x78, 0x30, 0x87, 0xdb, 0x12, 0x96, 0xa7, 0xfc, 0xf2, 0x19, 0x7e, 0xfa, 0x4f, + 0x0a, 0x90, 0xcc, 0x1b, 0x73, 0x77, 0xbb, 0x3f, 0x84, 0x55, 0x94, 0x20, 0xd1, 0x41, 0xa5, 0x76, + 0x25, 0xb1, 0x34, 0xa1, 0x9a, 0xe4, 0x67, 0xb5, 0xed, 0x80, 0x36, 0xcb, 0x65, 0x09, 0x69, 0x55, + 0x50, 0x1d, 0xcf, 0x89, 0x85, 0x85, 0x8f, 0xfa, 0xaf, 0x0a, 0x54, 0x3a, 0xe8, 0x7e, 0xd3, 0x73, + 0x2c, 0x41, 0x77, 0x2d, 0x6e, 0xf9, 0xf8, 0xbf, 0xa7, 0xea, 0x0b, 0x28, 0xf4, 0x22, 0x84, 0x58, + 0xd0, 0x46, 0x22, 0x48, 0xe2, 0x6e, 0xaf, 0x9c, 0xfd, 0xfd, 0x38, 0x67, 0xc6, 0x35, 0x63, 0x9b, + 0xd5, 0x8c, 0xcd, 0x33, 0x53, 0xf3, 0x3e, 0xd4, 0xa7, 0xe8, 0x25, 0x32, 0xdb, 0xbf, 0xa8, 0xa0, + 0x76, 0xd0, 0x25, 0xfb, 0x50, 0x9d, 0x79, 0x0b, 0x1e, 0x2c, 0x68, 0x4f, 0xed, 0xfd, 0x05, 0xc9, + 0xd4, 0xc4, 0xcf, 0xa0, 0x38, 0x1e, 0x53, 0xb5, 0x79, 0xa3, 0x45, 0x7b, 0x38, 0x2f, 0x9a, 0x02, + 0x1c, 0x00, 0x99, 0xf3, 0xc5, 0x7a, 0xb4, 0x70, 0xfa, 0x6a, 0x4f, 0x97, 0x1a, 0xce, 0xe4, 0x6b, + 0xa8, 0x4c, 0x37, 0xa2, 0x36, 0x67, 0x67, 0x22, 0x58, 0xbf, 0x3e, 0x97, 0x42, 0xee, 0x40, 0x79, + 0xa2, 0x09, 0xea, 0x99, 0x3d, 0xd9, 0x84, 0xf6, 0xf8, 0x9a, 0x44, 0x82, 0xa4, 0xdd, 0xfb, 0xfe, + 0xea, 0xf4, 0xb9, 0xb2, 0xfd, 0xe9, 0xd9, 0x45, 0x53, 0x39, 0xbf, 0x68, 0x2a, 0xff, 0x5c, 0x34, + 0x95, 0x9f, 0x2f, 0x9b, 0xb9, 0xf3, 0xcb, 0x66, 0xee, 0xaf, 0xcb, 0x66, 0xee, 0x40, 0x77, 0x3d, + 0xd1, 0xed, 0x1f, 0x19, 0x36, 0xf3, 0x5b, 0x2c, 0x40, 0x16, 0xf0, 0x56, 0xf4, 0x33, 0x6c, 0x85, + 0x7f, 0x0a, 0xc4, 0xa8, 0x47, 0xf1, 0xa8, 0x10, 0x7d, 0xfa, 0x5f, 0xfd, 0x17, 0x00, 0x00, 0xff, + 0xff, 0x70, 0x88, 0x77, 0x6a, 0x75, 0x08, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -855,16 +714,17 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. - // this operation is called by services initiating a controller registration. - AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) - // AuthorizeService asserts the given controller is the owner of the given address. + // AuthorizeService asserts the given controller is the owner of the given + // address. AuthorizeService(ctx context.Context, in *MsgAuthorizeService, opts ...grpc.CallOption) (*MsgAuthorizeServiceResponse, error) - // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages Macaroon for verification. + // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages + // Macaroon for verification. ExecuteTx(ctx context.Context, in *MsgExecuteTx, opts ...grpc.CallOption) (*MsgExecuteTxResponse, error) - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + // RegisterController initializes a controller with the given authentication + // set, address, cid, publicKey, and user-defined alias. RegisterController(ctx context.Context, in *MsgRegisterController, opts ...grpc.CallOption) (*MsgRegisterControllerResponse, error) - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + // RegisterService initializes a Service with a given permission scope and + // URI. The domain must have a valid TXT record containing the public key. RegisterService(ctx context.Context, in *MsgRegisterService, opts ...grpc.CallOption) (*MsgRegisterServiceResponse, error) // UpdateParams defines a governance operation for updating the parameters. UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) @@ -878,15 +738,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { - out := new(MsgAllocateVaultResponse) - err := c.cc.Invoke(ctx, "/did.v1.Msg/AllocateVault", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) AuthorizeService(ctx context.Context, in *MsgAuthorizeService, opts ...grpc.CallOption) (*MsgAuthorizeServiceResponse, error) { out := new(MsgAuthorizeServiceResponse) err := c.cc.Invoke(ctx, "/did.v1.Msg/AuthorizeService", in, out, opts...) @@ -934,16 +785,17 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts // MsgServer is the server API for Msg service. type MsgServer interface { - // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. - // this operation is called by services initiating a controller registration. - AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) - // AuthorizeService asserts the given controller is the owner of the given address. + // AuthorizeService asserts the given controller is the owner of the given + // address. AuthorizeService(context.Context, *MsgAuthorizeService) (*MsgAuthorizeServiceResponse, error) - // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages Macaroon for verification. + // ExecuteTx executes a transaction on the Sonr Blockchain. It leverages + // Macaroon for verification. ExecuteTx(context.Context, *MsgExecuteTx) (*MsgExecuteTxResponse, error) - // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. + // RegisterController initializes a controller with the given authentication + // set, address, cid, publicKey, and user-defined alias. RegisterController(context.Context, *MsgRegisterController) (*MsgRegisterControllerResponse, error) - // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. + // RegisterService initializes a Service with a given permission scope and + // URI. The domain must have a valid TXT record containing the public key. RegisterService(context.Context, *MsgRegisterService) (*MsgRegisterServiceResponse, error) // UpdateParams defines a governance operation for updating the parameters. UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) @@ -953,9 +805,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) AllocateVault(ctx context.Context, req *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") -} func (*UnimplementedMsgServer) AuthorizeService(ctx context.Context, req *MsgAuthorizeService) (*MsgAuthorizeServiceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AuthorizeService not implemented") } @@ -976,24 +825,6 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAllocateVault) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).AllocateVault(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/did.v1.Msg/AllocateVault", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_AuthorizeService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgAuthorizeService) if err := dec(in); err != nil { @@ -1088,10 +919,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "did.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "AllocateVault", - Handler: _Msg_AllocateVault_Handler, - }, { MethodName: "AuthorizeService", Handler: _Msg_AuthorizeService_Handler, @@ -1117,102 +944,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "did/v1/tx.proto", } -func (m *MsgAllocateVault) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAllocateVault) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAllocateVault) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Origin) > 0 { - i -= len(m.Origin) - copy(dAtA[i:], m.Origin) - i = encodeVarintTx(dAtA, i, uint64(len(m.Origin))) - i-- - dAtA[i] = 0x1a - } - if len(m.Subject) > 0 { - i -= len(m.Subject) - copy(dAtA[i:], m.Subject) - i = encodeVarintTx(dAtA, i, uint64(len(m.Subject))) - i-- - dAtA[i] = 0x12 - } - if len(m.Authority) > 0 { - i -= len(m.Authority) - copy(dAtA[i:], m.Authority) - i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgAllocateVaultResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAllocateVaultResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAllocateVaultResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Localhost { - i-- - if m.Localhost { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x20 - } - if len(m.Token) > 0 { - i -= len(m.Token) - copy(dAtA[i:], m.Token) - i = encodeVarintTx(dAtA, i, uint64(len(m.Token))) - i-- - dAtA[i] = 0x1a - } - if m.ExpiryBlock != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.ExpiryBlock)) - i-- - dAtA[i] = 0x10 - } - if len(m.Cid) > 0 { - i -= len(m.Cid) - copy(dAtA[i:], m.Cid) - i = encodeVarintTx(dAtA, i, uint64(len(m.Cid))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *MsgRegisterController) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1693,50 +1424,6 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *MsgAllocateVault) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Authority) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Subject) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Origin) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgAllocateVaultResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Cid) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.ExpiryBlock != 0 { - n += 1 + sovTx(uint64(m.ExpiryBlock)) - } - l = len(m.Token) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.Localhost { - n += 2 - } - return n -} - func (m *MsgRegisterController) Size() (n int) { if m == nil { return 0 @@ -1949,305 +1636,6 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *MsgAllocateVault) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authority = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Subject = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Origin = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgAllocateVaultResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Cid = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) - } - m.ExpiryBlock = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ExpiryBlock |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Token = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Localhost", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Localhost = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgRegisterController) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/vault/README.md b/x/vault/README.md new file mode 100644 index 000000000..d4ea1153c --- /dev/null +++ b/x/vault/README.md @@ -0,0 +1,15 @@ +# `x/vault` + +The Vault module is responsible for the management of IPFS deployed Decentralized Web Nodes (DWNs) and their associated data. + +## Concepts + +| Concept | Description | Reference | +| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- | +| Decentralized Web Node (DWN) | A decentralized, distributed, and secure network of nodes that store and share data. It is a decentralized alternative to traditional web hosting services. | | +| Decentralized Identifier (DID) | A unique identifier that is created, owned, and controlled by the user. It is used to establish a secure and verifiable digital identity. | | +| HTMX (Hypertext Markup Language eXtensions) | A set of extensions to HTML that allow for the creation of interactive web pages. It is used to enhance the user experience and provide additional functionality to web applications. | | +| IPFS (InterPlanetary File System) | A decentralized, peer-to-peer network for storing and sharing data. It is a distributed file system that allows for the creation and sharing of content across a network of nodes. | | +| WebAuthn (Web Authentication) | A set of APIs that allow websites to request user authentication using biometric or non-biometric factors. | | +| WebAssembly (Web Assembly) | A binary instruction format for a stack-based virtual machine. | | +| Verifiable Credential (VC) | A digital statement that can be cryptographically verified. | | diff --git a/x/vault/autocli.go b/x/vault/autocli.go new file mode 100644 index 000000000..721de0298 --- /dev/null +++ b/x/vault/autocli.go @@ -0,0 +1,31 @@ +package module + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + modulev1 "github.com/onsonr/sonr/api/vault/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Query_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Query the current consensus parameters", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: modulev1.Msg_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "UpdateParams", + Skip: false, // set to true if authority gated + }, + }, + }, + } +} diff --git a/x/vault/client/cli/query.go b/x/vault/client/cli/query.go new file mode 100644 index 000000000..fb2220253 --- /dev/null +++ b/x/vault/client/cli/query.go @@ -0,0 +1,50 @@ +package cli + +import ( + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + + "github.com/onsonr/sonr/x/vault/types" +) + +// !NOTE: Must enable in module.go (disabled in favor of autocli.go) + +func GetQueryCmd() *cobra.Command { + queryCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Querying commands for " + types.ModuleName, + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + queryCmd.AddCommand( + GetCmdParams(), + ) + return queryCmd +} + +func GetCmdParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Show all module params", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + flags.AddQueryFlagsToCmd(cmd) + return cmd +} diff --git a/x/vault/client/cli/tx.go b/x/vault/client/cli/tx.go new file mode 100644 index 000000000..6f052facd --- /dev/null +++ b/x/vault/client/cli/tx.go @@ -0,0 +1,71 @@ +package cli + +import ( + "strconv" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + + "github.com/onsonr/sonr/x/vault/types" +) + +// !NOTE: Must enable in module.go (disabled in favor of autocli.go) + +// NewTxCmd returns a root CLI command handler for certain modules +// transaction commands. +func NewTxCmd() *cobra.Command { + txCmd := &cobra.Command{ + Use: types.ModuleName, + Short: types.ModuleName + " subcommands.", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + txCmd.AddCommand( + MsgUpdateParams(), + ) + return txCmd +} + +// Returns a CLI command handler for registering a +// contract for the module. +func MsgUpdateParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-params [some-value]", + Short: "Update the params (must be submitted from the authority)", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + cliCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + senderAddress := cliCtx.GetFromAddress() + + someValue, err := strconv.ParseBool(args[0]) + if err != nil { + return err + } + + msg := &types.MsgUpdateParams{ + Authority: senderAddress.String(), + Params: types.Params{ + IpfsActive: someValue, + }, + } + + if err := msg.Validate(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} diff --git a/internal/dwn/main.go b/x/vault/client/dwn/main.go similarity index 90% rename from internal/dwn/main.go rename to x/vault/client/dwn/main.go index a48a8c059..d44b2ed7f 100644 --- a/internal/dwn/main.go +++ b/x/vault/client/dwn/main.go @@ -14,15 +14,19 @@ import ( "github.com/labstack/echo/v4" promise "github.com/nlepage/go-js-promise" - "github.com/onsonr/sonr/internal/dwn/middleware" - "github.com/onsonr/sonr/internal/dwn/state" - "github.com/onsonr/sonr/pkg/nebula" + "github.com/onsonr/sonr/nebula/pages" + "github.com/onsonr/sonr/x/vault/client/dwn/middleware" + "github.com/onsonr/sonr/x/vault/client/dwn/state" ) func main() { e := echo.New() e.Use(middleware.UseSession) - nebula.RegisterHandlers(e) + e.GET("/home", pages.Home) + e.GET("/login", pages.Login) + e.GET("/register", pages.Register) + e.GET("/profile", pages.Profile) + e.GET("/authorize", pages.Authorize) state.RegisterHandlers(e) Serve(e) } diff --git a/internal/dwn/middleware/headers.go b/x/vault/client/dwn/middleware/headers.go similarity index 100% rename from internal/dwn/middleware/headers.go rename to x/vault/client/dwn/middleware/headers.go diff --git a/internal/dwn/middleware/middleware.go b/x/vault/client/dwn/middleware/middleware.go similarity index 100% rename from internal/dwn/middleware/middleware.go rename to x/vault/client/dwn/middleware/middleware.go diff --git a/internal/dwn/middleware/session.go b/x/vault/client/dwn/middleware/session.go similarity index 100% rename from internal/dwn/middleware/session.go rename to x/vault/client/dwn/middleware/session.go diff --git a/internal/dwn/middleware/token.go b/x/vault/client/dwn/middleware/token.go similarity index 100% rename from internal/dwn/middleware/token.go rename to x/vault/client/dwn/middleware/token.go diff --git a/internal/dwn/state/auth.go b/x/vault/client/dwn/state/auth.go similarity index 100% rename from internal/dwn/state/auth.go rename to x/vault/client/dwn/state/auth.go diff --git a/internal/dwn/state/manifest.go b/x/vault/client/dwn/state/manifest.go similarity index 100% rename from internal/dwn/state/manifest.go rename to x/vault/client/dwn/state/manifest.go diff --git a/internal/dwn/state/openid.go b/x/vault/client/dwn/state/openid.go similarity index 100% rename from internal/dwn/state/openid.go rename to x/vault/client/dwn/state/openid.go diff --git a/internal/dwn/state/routes.go b/x/vault/client/dwn/state/routes.go similarity index 89% rename from internal/dwn/state/routes.go rename to x/vault/client/dwn/state/routes.go index 25e052343..3e0589f35 100644 --- a/internal/dwn/state/routes.go +++ b/x/vault/client/dwn/state/routes.go @@ -2,7 +2,7 @@ package state import ( "github.com/labstack/echo/v4" - middleware "github.com/onsonr/sonr/internal/dwn/middleware" + middleware "github.com/onsonr/sonr/x/vault/client/dwn/middleware" ) func RegisterHandlers(e *echo.Echo) { diff --git a/internal/dwn/state/views.go b/x/vault/client/dwn/state/views.go similarity index 100% rename from internal/dwn/state/views.go rename to x/vault/client/dwn/state/views.go diff --git a/internal/dwn/state/wellknown.go b/x/vault/client/dwn/state/wellknown.go similarity index 100% rename from internal/dwn/state/wellknown.go rename to x/vault/client/dwn/state/wellknown.go diff --git a/x/vault/depinject.go b/x/vault/depinject.go new file mode 100644 index 000000000..5be80d7a0 --- /dev/null +++ b/x/vault/depinject.go @@ -0,0 +1,65 @@ +package module + +import ( + "os" + + "github.com/cosmos/cosmos-sdk/codec" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + + "cosmossdk.io/core/address" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/store" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + + modulev1 "github.com/onsonr/sonr/api/vault/module/v1" + didkeeper "github.com/onsonr/sonr/x/did/keeper" + "github.com/onsonr/sonr/x/vault/keeper" +) + +var _ appmodule.AppModule = AppModule{} + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + +func init() { + appmodule.Register( + &modulev1.Module{}, + appmodule.Provide(ProvideModule), + ) +} + +type ModuleInputs struct { + depinject.In + + Cdc codec.Codec + StoreService store.KVStoreService + AddressCodec address.Codec + + DidKeeper didkeeper.Keeper + StakingKeeper stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper +} + +type ModuleOutputs struct { + depinject.Out + + Module appmodule.AppModule + Keeper keeper.Keeper +} + +func ProvideModule(in ModuleInputs) ModuleOutputs { + govAddr := authtypes.NewModuleAddress(govtypes.ModuleName).String() + + k := keeper.NewKeeper(in.Cdc, in.StoreService, log.NewLogger(os.Stderr), govAddr, in.DidKeeper) + m := NewAppModule(in.Cdc, k) + + return ModuleOutputs{Module: m, Keeper: k, Out: depinject.Out{}} +} diff --git a/pkg/vault/app.wasm b/x/vault/internal/app.wasm similarity index 77% rename from pkg/vault/app.wasm rename to x/vault/internal/app.wasm index 4be43299b14db4ef20994a910132b7280797678e..97f76e1491e043ba95f4ec1c60d4ff5d711ad1e6 100755 GIT binary patch delta 1548131 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 z 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�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�F< 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 E_znKNq8h&JTB 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 u8Tp-_d92&T#F9<{8o9b-zL9lF? 0 { + i -= len(m.Profile) + copy(dAtA[i:], m.Profile) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Profile))) + i-- + dAtA[i] = 0x52 + } + if len(m.PublicKey) > 0 { + i -= len(m.PublicKey) + copy(dAtA[i:], m.PublicKey) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.PublicKey))) + i-- + dAtA[i] = 0x4a + } + if len(m.Keyshare) > 0 { + i -= len(m.Keyshare) + copy(dAtA[i:], m.Keyshare) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Keyshare))) + i-- + dAtA[i] = 0x42 + } + if len(m.Grant) > 0 { + i -= len(m.Grant) + copy(dAtA[i:], m.Grant) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Grant))) + i-- + dAtA[i] = 0x3a + } + if len(m.Jwk) > 0 { + i -= len(m.Jwk) + copy(dAtA[i:], m.Jwk) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Jwk))) + i-- + dAtA[i] = 0x32 + } + if len(m.Credential) > 0 { + i -= len(m.Credential) + copy(dAtA[i:], m.Credential) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Credential))) + i-- + dAtA[i] = 0x2a + } + if len(m.Chain) > 0 { + i -= len(m.Chain) + copy(dAtA[i:], m.Chain) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Chain))) + i-- + dAtA[i] = 0x22 + } + if len(m.Asset) > 0 { + i -= len(m.Asset) + copy(dAtA[i:], m.Asset) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Asset))) + i-- + dAtA[i] = 0x1a + } + if len(m.Account) > 0 { + i -= len(m.Account) + copy(dAtA[i:], m.Account) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.Account))) + i-- + dAtA[i] = 0x12 + } + if m.Version != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.Version)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + return n +} + +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.IpfsActive { + n += 2 + } + if m.LocalRegistrationEnabled { + n += 2 + } + if m.Schema != nil { + l = m.Schema.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + return n +} + +func (m *Schema) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Version != 0 { + n += 1 + sovGenesis(uint64(m.Version)) + } + l = len(m.Account) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Asset) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Chain) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Credential) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Jwk) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Grant) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Keyshare) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.PublicKey) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.Profile) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IpfsActive", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IpfsActive = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalRegistrationEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.LocalRegistrationEnabled = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Schema == nil { + m.Schema = &Schema{} + } + if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Schema) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Schema: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Schema: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + m.Version = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Version |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Account = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Asset", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Asset = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Chain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Credential", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Credential = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Jwk", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Jwk = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Grant", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Grant = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Keyshare", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Keyshare = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublicKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublicKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Profile", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Profile = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/vault/types/genesis_test.go b/x/vault/types/genesis_test.go new file mode 100644 index 000000000..e1f7f7ff8 --- /dev/null +++ b/x/vault/types/genesis_test.go @@ -0,0 +1,42 @@ +package types_test + +import ( + "testing" + + "github.com/onsonr/sonr/x/vault/types" + + "github.com/stretchr/testify/require" +) + +func TestGenesisState_Validate(t *testing.T) { + tests := []struct { + desc string + genState *types.GenesisState + valid bool + }{ + { + desc: "default is valid", + genState: types.DefaultGenesis(), + valid: true, + }, + { + desc: "valid genesis state", + genState: &types.GenesisState{ + + // this line is used by starport scaffolding # types/genesis/validField + }, + valid: true, + }, + // this line is used by starport scaffolding # types/genesis/testcase + } + for _, tc := range tests { + t.Run(tc.desc, func(t *testing.T) { + err := tc.genState.Validate() + if tc.valid { + require.NoError(t, err) + } else { + require.Error(t, err) + } + }) + } +} diff --git a/x/vault/types/keys.go b/x/vault/types/keys.go new file mode 100644 index 000000000..075c9510f --- /dev/null +++ b/x/vault/types/keys.go @@ -0,0 +1,27 @@ +package types + +import ( + "cosmossdk.io/collections" + + ormv1alpha1 "cosmossdk.io/api/cosmos/orm/v1alpha1" +) + +var ( + // ParamsKey saves the current module params. + ParamsKey = collections.NewPrefix(0) +) + +const ( + ModuleName = "vault" + + StoreKey = ModuleName + + QuerierRoute = ModuleName +) + +var ORMModuleSchema = ormv1alpha1.ModuleSchemaDescriptor{ + SchemaFile: []*ormv1alpha1.ModuleSchemaDescriptor_FileEntry{ + {Id: 1, ProtoFileName: "vault/v1/state.proto"}, + }, + Prefix: []byte{0}, +} diff --git a/x/vault/types/msgs.go b/x/vault/types/msgs.go new file mode 100644 index 000000000..092984344 --- /dev/null +++ b/x/vault/types/msgs.go @@ -0,0 +1,80 @@ +package types + +import ( + "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var _ sdk.Msg = &MsgUpdateParams{} + +// NewMsgUpdateParams creates new instance of MsgUpdateParams +func NewMsgUpdateParams( + sender sdk.Address, + someValue bool, +) *MsgUpdateParams { + return &MsgUpdateParams{ + Authority: sender.String(), + Params: Params{ + IpfsActive: someValue, + }, + } +} + +// Route returns the name of the module +func (msg MsgUpdateParams) Route() string { return ModuleName } + +// Type returns the the action +func (msg MsgUpdateParams) Type() string { return "update_params" } + +// GetSignBytes implements the LegacyMsg interface. +func (msg MsgUpdateParams) GetSignBytes() []byte { + return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) +} + +// GetSigners returns the expected signers for a MsgUpdateParams message. +func (msg *MsgUpdateParams) GetSigners() []sdk.AccAddress { + addr, _ := sdk.AccAddressFromBech32(msg.Authority) + return []sdk.AccAddress{addr} +} + +// ValidateBasic does a sanity check on the provided data. +func (msg *MsgUpdateParams) Validate() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return errors.Wrap(err, "invalid authority address") + } + + return msg.Params.Validate() +} + +// +// [AllocateVault] +// + +// NewMsgAllocateVault creates a new instance of MsgAllocateVault +func NewMsgAllocateVault( + sender sdk.Address, +) (*MsgAllocateVault, error) { + return &MsgAllocateVault{}, nil +} + +// GetSigners returns the expected signers for a MsgUpdateParams message. +func (msg *MsgAllocateVault) GetSigners() []sdk.AccAddress { + addr, _ := sdk.AccAddressFromBech32(msg.Authority) + return []sdk.AccAddress{addr} +} + +// Route returns the name of the module +func (msg MsgAllocateVault) Route() string { return ModuleName } + +// Type returns the the action +func (msg MsgAllocateVault) Type() string { return "allocate_vault" } + +// GetSignBytes implements the LegacyMsg interface. +func (msg MsgAllocateVault) GetSignBytes() []byte { + return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) +} + +// Vaalidate does a sanity check on the provided data. +func (msg *MsgAllocateVault) Validate() error { + return nil +} diff --git a/x/vault/types/params.go b/x/vault/types/params.go new file mode 100644 index 000000000..482089089 --- /dev/null +++ b/x/vault/types/params.go @@ -0,0 +1,46 @@ +package types + +import ( + "encoding/json" +) + +// DefaultParams returns default module parameters. +func DefaultParams() Params { + // TODO: + return Params{ + IpfsActive: true, + Schema: DefaultSchema(), + } +} + +// Stringer method for Params. +func (p Params) String() string { + bz, err := json.Marshal(p) + if err != nil { + panic(err) + } + + return string(bz) +} + +// Validate does the sanity check on the params. +func (p Params) Validate() error { + // TODO: + return nil +} + +// DefaultSchema returns the default schema +func DefaultSchema() *Schema { + return &Schema{ + Version: 1, + Account: "++, id, name, address, publicKey, chainCode, index, controller, createdAt", + Asset: "++, id, name, symbol, decimals, chainCode, createdAt", + Chain: "++, id, name, networkId, chainCode, createdAt", + Credential: "++, id, subject, controller, attestationType, origin, label, deviceId, credentialId, publicKey, transport, signCount, userPresent, userVerified, backupEligible, backupState, cloneWarning, createdAt, updatedAt", + Jwk: "++, kty, crv, x, y, n, e", + Grant: "++, subject, controller, origin, token, scopes, createdAt, updatedAt", + Keyshare: "++, id, data, role, createdAt, lastRefreshed", + PublicKey: "++, role, algorithm, encoding, curve, key_type, raw, jwk", + Profile: "++, id, subject, controller, originUri, publicMetadata, privateMetadata, createdAt, updatedAt", + } +} diff --git a/x/vault/types/query.pb.go b/x/vault/types/query.pb.go new file mode 100644 index 000000000..fec7bfb75 --- /dev/null +++ b/x/vault/types/query.pb.go @@ -0,0 +1,1676 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: vault/v1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{0} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + // params defines the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{1} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() *Params { + if m != nil { + return m.Params + } + return nil +} + +// QueryIPFSRequest is the request type for the Query/IPFS RPC method. +type QueryIPFSRequest struct { +} + +func (m *QueryIPFSRequest) Reset() { *m = QueryIPFSRequest{} } +func (m *QueryIPFSRequest) String() string { return proto.CompactTextString(m) } +func (*QueryIPFSRequest) ProtoMessage() {} +func (*QueryIPFSRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{2} +} +func (m *QueryIPFSRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryIPFSRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryIPFSRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryIPFSRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryIPFSRequest.Merge(m, src) +} +func (m *QueryIPFSRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryIPFSRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryIPFSRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryIPFSRequest proto.InternalMessageInfo + +// QueryIPFSResponse is the response type for the Query/IPFS RPC method. +type QueryIPFSResponse struct { + // IPFS is the IPFS client status. + Ipfs bool `protobuf:"varint,1,opt,name=ipfs,proto3" json:"ipfs,omitempty"` +} + +func (m *QueryIPFSResponse) Reset() { *m = QueryIPFSResponse{} } +func (m *QueryIPFSResponse) String() string { return proto.CompactTextString(m) } +func (*QueryIPFSResponse) ProtoMessage() {} +func (*QueryIPFSResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{3} +} +func (m *QueryIPFSResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryIPFSResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryIPFSResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryIPFSResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryIPFSResponse.Merge(m, src) +} +func (m *QueryIPFSResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryIPFSResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryIPFSResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryIPFSResponse proto.InternalMessageInfo + +func (m *QueryIPFSResponse) GetIpfs() bool { + if m != nil { + return m.Ipfs + } + return false +} + +// SyncRequest is the request type for the Sync RPC method. +type SyncRequest struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` +} + +func (m *SyncRequest) Reset() { *m = SyncRequest{} } +func (m *SyncRequest) String() string { return proto.CompactTextString(m) } +func (*SyncRequest) ProtoMessage() {} +func (*SyncRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{4} +} +func (m *SyncRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SyncRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SyncRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SyncRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncRequest.Merge(m, src) +} +func (m *SyncRequest) XXX_Size() int { + return m.Size() +} +func (m *SyncRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SyncRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncRequest proto.InternalMessageInfo + +func (m *SyncRequest) GetDid() string { + if m != nil { + return m.Did + } + return "" +} + +// SyncResponse is the response type for the Sync RPC method. +type SyncResponse struct { + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` +} + +func (m *SyncResponse) Reset() { *m = SyncResponse{} } +func (m *SyncResponse) String() string { return proto.CompactTextString(m) } +func (*SyncResponse) ProtoMessage() {} +func (*SyncResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{5} +} +func (m *SyncResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SyncResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SyncResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SyncResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncResponse.Merge(m, src) +} +func (m *SyncResponse) XXX_Size() int { + return m.Size() +} +func (m *SyncResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SyncResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncResponse proto.InternalMessageInfo + +func (m *SyncResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +// BuildTxRequest is the request type for the BuildTx RPC method. +type BuildTxRequest struct { + Did string `protobuf:"bytes,1,opt,name=did,proto3" json:"did,omitempty"` + Pkl string `protobuf:"bytes,2,opt,name=pkl,proto3" json:"pkl,omitempty"` +} + +func (m *BuildTxRequest) Reset() { *m = BuildTxRequest{} } +func (m *BuildTxRequest) String() string { return proto.CompactTextString(m) } +func (*BuildTxRequest) ProtoMessage() {} +func (*BuildTxRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{6} +} +func (m *BuildTxRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BuildTxRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BuildTxRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BuildTxRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_BuildTxRequest.Merge(m, src) +} +func (m *BuildTxRequest) XXX_Size() int { + return m.Size() +} +func (m *BuildTxRequest) XXX_DiscardUnknown() { + xxx_messageInfo_BuildTxRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_BuildTxRequest proto.InternalMessageInfo + +func (m *BuildTxRequest) GetDid() string { + if m != nil { + return m.Did + } + return "" +} + +func (m *BuildTxRequest) GetPkl() string { + if m != nil { + return m.Pkl + } + return "" +} + +// BuildTxResponse is the response type for the BuildTx RPC method. +type BuildTxResponse struct { + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Tx string `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"` +} + +func (m *BuildTxResponse) Reset() { *m = BuildTxResponse{} } +func (m *BuildTxResponse) String() string { return proto.CompactTextString(m) } +func (*BuildTxResponse) ProtoMessage() {} +func (*BuildTxResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e6d49a2800ab3e4b, []int{7} +} +func (m *BuildTxResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BuildTxResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BuildTxResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BuildTxResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BuildTxResponse.Merge(m, src) +} +func (m *BuildTxResponse) XXX_Size() int { + return m.Size() +} +func (m *BuildTxResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BuildTxResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_BuildTxResponse proto.InternalMessageInfo + +func (m *BuildTxResponse) GetSuccess() bool { + if m != nil { + return m.Success + } + return false +} + +func (m *BuildTxResponse) GetTx() string { + if m != nil { + return m.Tx + } + return "" +} + +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "vault.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "vault.v1.QueryParamsResponse") + proto.RegisterType((*QueryIPFSRequest)(nil), "vault.v1.QueryIPFSRequest") + proto.RegisterType((*QueryIPFSResponse)(nil), "vault.v1.QueryIPFSResponse") + proto.RegisterType((*SyncRequest)(nil), "vault.v1.SyncRequest") + proto.RegisterType((*SyncResponse)(nil), "vault.v1.SyncResponse") + proto.RegisterType((*BuildTxRequest)(nil), "vault.v1.BuildTxRequest") + proto.RegisterType((*BuildTxResponse)(nil), "vault.v1.BuildTxResponse") +} + +func init() { proto.RegisterFile("vault/v1/query.proto", fileDescriptor_e6d49a2800ab3e4b) } + +var fileDescriptor_e6d49a2800ab3e4b = []byte{ + // 424 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x41, 0x8b, 0xd3, 0x40, + 0x1c, 0xc5, 0x9b, 0xb8, 0x76, 0xd7, 0xff, 0x4a, 0xcd, 0xce, 0xae, 0x25, 0x1b, 0xd6, 0x28, 0x83, + 0x60, 0x4f, 0x09, 0x5b, 0xbd, 0x09, 0x0a, 0x3d, 0x08, 0x1e, 0x84, 0xda, 0x7a, 0xd1, 0x8b, 0xa4, + 0xe9, 0x18, 0x43, 0xd3, 0x99, 0x69, 0x66, 0x52, 0x92, 0xab, 0x9f, 0x40, 0xf4, 0x4b, 0x79, 0x2c, + 0x78, 0xf1, 0x28, 0xad, 0x1f, 0x44, 0x32, 0x99, 0x34, 0xad, 0x5a, 0xbc, 0x84, 0xc9, 0x9b, 0xf7, + 0x7e, 0xff, 0xcc, 0x9b, 0xc0, 0xc5, 0x32, 0xc8, 0x12, 0xe9, 0x2f, 0xaf, 0xfd, 0x45, 0x46, 0xd2, + 0xc2, 0xe3, 0x29, 0x93, 0x0c, 0x9d, 0x28, 0xd5, 0x5b, 0x5e, 0x3b, 0x57, 0x11, 0x63, 0x51, 0x42, + 0xfc, 0x80, 0xc7, 0x7e, 0x40, 0x29, 0x93, 0x81, 0x8c, 0x19, 0x15, 0x95, 0xcf, 0xe9, 0x6e, 0xd3, + 0x11, 0xa1, 0x44, 0xc4, 0x5a, 0xc7, 0x17, 0x80, 0x5e, 0x97, 0xb8, 0x61, 0x90, 0x06, 0x73, 0x31, + 0x22, 0x8b, 0x8c, 0x08, 0x89, 0x9f, 0xc3, 0xf9, 0x9e, 0x2a, 0x38, 0xa3, 0x82, 0xa0, 0x1e, 0xb4, + 0xb9, 0x52, 0x6c, 0xe3, 0x81, 0xd1, 0x3b, 0xed, 0x5b, 0x5e, 0x3d, 0xdd, 0xd3, 0x4e, 0xbd, 0x8f, + 0x11, 0x58, 0x0a, 0xf0, 0x72, 0xf8, 0x62, 0x5c, 0x43, 0x1f, 0xc1, 0xd9, 0x8e, 0xa6, 0x91, 0x08, + 0x8e, 0x62, 0xfe, 0xa1, 0x02, 0x9e, 0x8c, 0xd4, 0x1a, 0xdf, 0x87, 0xd3, 0x71, 0x41, 0x43, 0x9d, + 0x43, 0x16, 0xdc, 0x98, 0xc6, 0x53, 0xe5, 0xb8, 0x35, 0x2a, 0x97, 0xb8, 0x07, 0xb7, 0x2b, 0x83, + 0x86, 0xd8, 0x70, 0x2c, 0xb2, 0x30, 0x24, 0xa2, 0xe6, 0xd4, 0xaf, 0xf8, 0x09, 0x74, 0x06, 0x59, + 0x9c, 0x4c, 0xdf, 0xe4, 0x07, 0x69, 0xa5, 0xc2, 0x67, 0x89, 0x6d, 0x56, 0x0a, 0x9f, 0x25, 0xf8, + 0x29, 0xdc, 0xd9, 0xa6, 0xfe, 0x37, 0x02, 0x75, 0xc0, 0x94, 0xb9, 0x4e, 0x9b, 0x32, 0xef, 0x7f, + 0x31, 0xe1, 0xa6, 0x3a, 0x27, 0x7a, 0x0f, 0xed, 0xaa, 0x16, 0x74, 0xd5, 0x14, 0xf5, 0x77, 0xdb, + 0xce, 0xbd, 0x03, 0xbb, 0xd5, 0x68, 0x6c, 0x7f, 0xfa, 0xfe, 0xeb, 0xab, 0x89, 0x90, 0xe5, 0x6f, + 0xef, 0xb0, 0x6a, 0x19, 0xbd, 0x85, 0x63, 0xfd, 0x9d, 0xc8, 0x6e, 0x18, 0xfb, 0x07, 0x76, 0x2e, + 0xff, 0xb1, 0xa3, 0xc9, 0x97, 0x8a, 0x7c, 0x8e, 0xcf, 0x1a, 0xf2, 0xa4, 0xb4, 0xc8, 0x1c, 0xbd, + 0x82, 0xa3, 0xb2, 0x62, 0x74, 0xb7, 0x49, 0xef, 0xdc, 0x89, 0xd3, 0xfd, 0x53, 0xd6, 0xc4, 0xae, + 0x22, 0x5a, 0xb8, 0xd3, 0x10, 0x45, 0x41, 0xc3, 0xc1, 0xb3, 0x6f, 0x6b, 0xd7, 0x58, 0xad, 0x5d, + 0xe3, 0xe7, 0xda, 0x35, 0x3e, 0x6f, 0xdc, 0xd6, 0x6a, 0xe3, 0xb6, 0x7e, 0x6c, 0xdc, 0xd6, 0xbb, + 0x87, 0x51, 0x2c, 0x3f, 0x66, 0x13, 0x2f, 0x64, 0x73, 0x9f, 0x51, 0xc1, 0x68, 0xea, 0xab, 0x47, + 0xae, 0x09, 0xb2, 0xe0, 0x44, 0x4c, 0xda, 0xea, 0x6f, 0x7d, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, + 0x76, 0x05, 0xd8, 0x03, 0x05, 0x03, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Params queries all parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // BuildTx builds an unsigned transaction message for the given PKL. + BuildTx(ctx context.Context, in *BuildTxRequest, opts ...grpc.CallOption) (*BuildTxResponse, error) + // Sync queries the DID document by its id. And returns the required PKL + // information + Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/vault.v1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) BuildTx(ctx context.Context, in *BuildTxRequest, opts ...grpc.CallOption) (*BuildTxResponse, error) { + out := new(BuildTxResponse) + err := c.cc.Invoke(ctx, "/vault.v1.Query/BuildTx", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Sync(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) { + out := new(SyncResponse) + err := c.cc.Invoke(ctx, "/vault.v1.Query/Sync", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Params queries all parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // BuildTx builds an unsigned transaction message for the given PKL. + BuildTx(context.Context, *BuildTxRequest) (*BuildTxResponse, error) + // Sync queries the DID document by its id. And returns the required PKL + // information + Sync(context.Context, *SyncRequest) (*SyncResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (*UnimplementedQueryServer) BuildTx(ctx context.Context, req *BuildTxRequest) (*BuildTxResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BuildTx not implemented") +} +func (*UnimplementedQueryServer) Sync(ctx context.Context, req *SyncRequest) (*SyncResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Sync not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vault.v1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_BuildTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BuildTxRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).BuildTx(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vault.v1.Query/BuildTx", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).BuildTx(ctx, req.(*BuildTxRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Sync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SyncRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Sync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vault.v1.Query/Sync", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Sync(ctx, req.(*SyncRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "vault.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "BuildTx", + Handler: _Query_BuildTx_Handler, + }, + { + MethodName: "Sync", + Handler: _Query_Sync_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "vault/v1/query.proto", +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Params != nil { + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryIPFSRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryIPFSRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryIPFSRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryIPFSResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryIPFSResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryIPFSResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Ipfs { + i-- + if m.Ipfs { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *SyncRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SyncRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SyncRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *SyncResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SyncResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SyncResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *BuildTxRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BuildTxRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BuildTxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Pkl) > 0 { + i -= len(m.Pkl) + copy(dAtA[i:], m.Pkl) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Pkl))) + i-- + dAtA[i] = 0x12 + } + if len(m.Did) > 0 { + i -= len(m.Did) + copy(dAtA[i:], m.Did) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Did))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BuildTxResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BuildTxResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BuildTxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Tx) > 0 { + i -= len(m.Tx) + copy(dAtA[i:], m.Tx) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Tx))) + i-- + dAtA[i] = 0x12 + } + if m.Success { + i-- + if m.Success { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Params != nil { + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryIPFSRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryIPFSResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Ipfs { + n += 2 + } + return n +} + +func (m *SyncRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *SyncResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Success { + n += 2 + } + return n +} + +func (m *BuildTxRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Did) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Pkl) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *BuildTxResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Success { + n += 2 + } + l = len(m.Tx) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Params == nil { + m.Params = &Params{} + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryIPFSRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryIPFSRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryIPFSRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryIPFSResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryIPFSResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryIPFSResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Ipfs", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Ipfs = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SyncRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SyncRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SyncRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SyncResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SyncResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SyncResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BuildTxRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BuildTxRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BuildTxRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Did", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Did = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pkl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pkl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BuildTxResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BuildTxResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BuildTxResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Success = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Tx = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/vault/types/query.pb.gw.go b/x/vault/types/query.pb.gw.go new file mode 100644 index 000000000..712b1dbe7 --- /dev/null +++ b/x/vault/types/query.pb.gw.go @@ -0,0 +1,319 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: vault/v1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_BuildTx_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_BuildTx_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BuildTxRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_BuildTx_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.BuildTx(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_BuildTx_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq BuildTxRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_BuildTx_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.BuildTx(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_Sync_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Sync_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SyncRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Sync_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Sync(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Sync_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq SyncRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Sync_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Sync(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Query_BuildTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_BuildTx_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_BuildTx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Query_Sync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Sync_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Sync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Query_BuildTx_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_BuildTx_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_BuildTx_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Query_Sync_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Sync_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Sync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"vault", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_BuildTx_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"vault", "v1", "buildtx"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Sync_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"vault", "v1", "sync"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Params_0 = runtime.ForwardResponseMessage + + forward_Query_BuildTx_0 = runtime.ForwardResponseMessage + + forward_Query_Sync_0 = runtime.ForwardResponseMessage +) diff --git a/x/vault/types/state.pb.go b/x/vault/types/state.pb.go new file mode 100644 index 000000000..7440654f9 --- /dev/null +++ b/x/vault/types/state.pb.go @@ -0,0 +1,355 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: vault/v1/state.proto + +package types + +import ( + _ "cosmossdk.io/orm" + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type DWN struct { + Account []byte `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (m *DWN) Reset() { *m = DWN{} } +func (m *DWN) String() string { return proto.CompactTextString(m) } +func (*DWN) ProtoMessage() {} +func (*DWN) Descriptor() ([]byte, []int) { + return fileDescriptor_2ad3e71ba384142e, []int{0} +} +func (m *DWN) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DWN) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DWN.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DWN) XXX_Merge(src proto.Message) { + xxx_messageInfo_DWN.Merge(m, src) +} +func (m *DWN) XXX_Size() int { + return m.Size() +} +func (m *DWN) XXX_DiscardUnknown() { + xxx_messageInfo_DWN.DiscardUnknown(m) +} + +var xxx_messageInfo_DWN proto.InternalMessageInfo + +func (m *DWN) GetAccount() []byte { + if m != nil { + return m.Account + } + return nil +} + +func (m *DWN) GetAmount() uint64 { + if m != nil { + return m.Amount + } + return 0 +} + +func init() { + proto.RegisterType((*DWN)(nil), "vault.v1.DWN") +} + +func init() { proto.RegisterFile("vault/v1/state.proto", fileDescriptor_2ad3e71ba384142e) } + +var fileDescriptor_2ad3e71ba384142e = []byte{ + // 198 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x29, 0x4b, 0x2c, 0xcd, + 0x29, 0xd1, 0x2f, 0x33, 0xd4, 0x2f, 0x2e, 0x49, 0x2c, 0x49, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, + 0x17, 0xe2, 0x00, 0x8b, 0xea, 0x95, 0x19, 0x4a, 0x89, 0x27, 0xe7, 0x17, 0xe7, 0xe6, 0x17, 0xeb, + 0xe7, 0x17, 0xe5, 0x82, 0x14, 0xe5, 0x17, 0xe5, 0x42, 0x94, 0x28, 0x45, 0x70, 0x31, 0xbb, 0x84, + 0xfb, 0x09, 0x49, 0x70, 0xb1, 0x27, 0x26, 0x27, 0xe7, 0x97, 0xe6, 0x95, 0x48, 0x30, 0x2a, 0x30, + 0x6a, 0xf0, 0x04, 0xc1, 0xb8, 0x42, 0x62, 0x5c, 0x6c, 0x89, 0xb9, 0x60, 0x09, 0x26, 0x05, 0x46, + 0x0d, 0x96, 0x20, 0x28, 0xcf, 0x4a, 0xfe, 0xd3, 0xbc, 0xcb, 0x7d, 0xcc, 0x92, 0x5c, 0x9c, 0x70, + 0x9d, 0x42, 0x5c, 0x30, 0xa5, 0x02, 0x8c, 0x12, 0x8c, 0x4e, 0x76, 0x27, 0x1e, 0xc9, 0x31, 0x5e, + 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, + 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x92, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, + 0xab, 0x9f, 0x9f, 0x57, 0x9c, 0x9f, 0x57, 0xa4, 0x0f, 0x26, 0x2a, 0xf4, 0x21, 0xbe, 0x28, 0xa9, + 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0x3b, 0xd0, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xab, 0xea, + 0x40, 0xd9, 0xdb, 0x00, 0x00, 0x00, +} + +func (m *DWN) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DWN) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DWN) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Amount != 0 { + i = encodeVarintState(dAtA, i, uint64(m.Amount)) + i-- + dAtA[i] = 0x10 + } + if len(m.Account) > 0 { + i -= len(m.Account) + copy(dAtA[i:], m.Account) + i = encodeVarintState(dAtA, i, uint64(len(m.Account))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintState(dAtA []byte, offset int, v uint64) int { + offset -= sovState(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *DWN) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Account) + if l > 0 { + n += 1 + l + sovState(uint64(l)) + } + if m.Amount != 0 { + n += 1 + sovState(uint64(m.Amount)) + } + return n +} + +func sovState(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozState(x uint64) (n int) { + return sovState(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *DWN) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DWN: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DWN: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthState + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthState + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Account = append(m.Account[:0], dAtA[iNdEx:postIndex]...) + if m.Account == nil { + m.Account = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + m.Amount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowState + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Amount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipState(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthState + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipState(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowState + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthState + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupState + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthState + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthState = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowState = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupState = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/vault/types/tx.pb.go b/x/vault/types/tx.pb.go new file mode 100644 index 000000000..314ab7ae5 --- /dev/null +++ b/x/vault/types/tx.pb.go @@ -0,0 +1,1231 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: vault/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgUpdateParams is the Msg/UpdateParams request type. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParams struct { + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_311d0123a4881c5c, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_311d0123a4881c5c, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +// MsgAllocateVault is the message type for the AllocateVault RPC. +type MsgAllocateVault struct { + // authority is the address of the service account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // subject is a unique human-defined identifier to associate with the vault. + Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"` + // origin is the origin of the request in wildcard form. + Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"` +} + +func (m *MsgAllocateVault) Reset() { *m = MsgAllocateVault{} } +func (m *MsgAllocateVault) String() string { return proto.CompactTextString(m) } +func (*MsgAllocateVault) ProtoMessage() {} +func (*MsgAllocateVault) Descriptor() ([]byte, []int) { + return fileDescriptor_311d0123a4881c5c, []int{2} +} +func (m *MsgAllocateVault) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAllocateVault) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAllocateVault.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAllocateVault) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAllocateVault.Merge(m, src) +} +func (m *MsgAllocateVault) XXX_Size() int { + return m.Size() +} +func (m *MsgAllocateVault) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAllocateVault.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAllocateVault proto.InternalMessageInfo + +func (m *MsgAllocateVault) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgAllocateVault) GetSubject() string { + if m != nil { + return m.Subject + } + return "" +} + +func (m *MsgAllocateVault) GetOrigin() string { + if m != nil { + return m.Origin + } + return "" +} + +// MsgAllocateVaultResponse is the response type for the AllocateVault RPC. +type MsgAllocateVaultResponse struct { + // CID is the content identifier of the vault. + Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` + // ExpiryBlock is the block number at which the vault will expire. + ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"` + // RegistrationOptions is a json string of the + // PublicKeyCredentialCreationOptions for WebAuthn + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` + // IsLocalhost is a flag to indicate if the vault is localhost + Localhost bool `protobuf:"varint,4,opt,name=localhost,proto3" json:"localhost,omitempty"` +} + +func (m *MsgAllocateVaultResponse) Reset() { *m = MsgAllocateVaultResponse{} } +func (m *MsgAllocateVaultResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAllocateVaultResponse) ProtoMessage() {} +func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_311d0123a4881c5c, []int{3} +} +func (m *MsgAllocateVaultResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAllocateVaultResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAllocateVaultResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAllocateVaultResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAllocateVaultResponse.Merge(m, src) +} +func (m *MsgAllocateVaultResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAllocateVaultResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAllocateVaultResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAllocateVaultResponse proto.InternalMessageInfo + +func (m *MsgAllocateVaultResponse) GetCid() string { + if m != nil { + return m.Cid + } + return "" +} + +func (m *MsgAllocateVaultResponse) GetExpiryBlock() int64 { + if m != nil { + return m.ExpiryBlock + } + return 0 +} + +func (m *MsgAllocateVaultResponse) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +func (m *MsgAllocateVaultResponse) GetLocalhost() bool { + if m != nil { + return m.Localhost + } + return false +} + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "vault.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "vault.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgAllocateVault)(nil), "vault.v1.MsgAllocateVault") + proto.RegisterType((*MsgAllocateVaultResponse)(nil), "vault.v1.MsgAllocateVaultResponse") +} + +func init() { proto.RegisterFile("vault/v1/tx.proto", fileDescriptor_311d0123a4881c5c) } + +var fileDescriptor_311d0123a4881c5c = []byte{ + // 460 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x3f, 0x6f, 0xd3, 0x40, + 0x14, 0xcf, 0x91, 0x36, 0x34, 0xaf, 0x05, 0xc2, 0x29, 0x6a, 0x1d, 0x0b, 0x99, 0x34, 0x62, 0x88, + 0x2a, 0x61, 0xab, 0x45, 0x62, 0x60, 0x40, 0x6a, 0x66, 0x22, 0x90, 0x11, 0x0c, 0x2c, 0x95, 0xe3, + 0x9c, 0x2e, 0xa6, 0xb6, 0x9f, 0xe5, 0x77, 0x89, 0x92, 0x0d, 0xc1, 0x84, 0xc4, 0xc0, 0xf7, 0x60, + 0xe9, 0xc0, 0x87, 0xe8, 0x58, 0x31, 0x31, 0x21, 0x94, 0x0c, 0xfd, 0x1a, 0xc8, 0x3e, 0xbb, 0x21, + 0x41, 0x59, 0x58, 0x2c, 0xff, 0xfe, 0xdc, 0xfb, 0xfd, 0xee, 0xf4, 0xe0, 0xfe, 0xc4, 0x1b, 0x87, + 0xca, 0x99, 0x1c, 0x3b, 0x6a, 0x6a, 0x27, 0x29, 0x2a, 0xe4, 0x3b, 0x39, 0x65, 0x4f, 0x8e, 0xcd, + 0x03, 0x1f, 0x29, 0x42, 0x72, 0x22, 0x92, 0x99, 0x23, 0x22, 0xa9, 0x2d, 0x66, 0x4b, 0x0b, 0x67, + 0x39, 0x72, 0x34, 0x28, 0xa4, 0xa6, 0x44, 0x89, 0x9a, 0xcf, 0xfe, 0x0a, 0x76, 0xff, 0x26, 0x46, + 0x8a, 0x58, 0x50, 0x50, 0xb8, 0x3b, 0x9f, 0x19, 0xdc, 0xeb, 0x93, 0x7c, 0x93, 0x0c, 0x3d, 0x25, + 0x5e, 0x79, 0xa9, 0x17, 0x11, 0x7f, 0x0a, 0x75, 0x6f, 0xac, 0x46, 0x98, 0x06, 0x6a, 0x66, 0xb0, + 0x36, 0xeb, 0xd6, 0x7b, 0xc6, 0x8f, 0xef, 0x8f, 0x9b, 0x45, 0xcc, 0xe9, 0x70, 0x98, 0x0a, 0xa2, + 0xd7, 0x2a, 0x0d, 0x62, 0xe9, 0x2e, 0xad, 0xdc, 0x86, 0x5a, 0x92, 0x4f, 0x30, 0x6e, 0xb5, 0x59, + 0x77, 0xf7, 0xa4, 0x61, 0x97, 0x17, 0xb1, 0xf5, 0xe4, 0xde, 0xd6, 0xe5, 0xaf, 0x87, 0x15, 0xb7, + 0x70, 0x3d, 0xbb, 0xfb, 0xf1, 0xfa, 0xe2, 0x68, 0x79, 0xbe, 0xd3, 0x82, 0x83, 0xb5, 0x2a, 0xae, + 0xa0, 0x04, 0x63, 0x12, 0x9d, 0x2f, 0x0c, 0x1a, 0x7d, 0x92, 0xa7, 0x61, 0x88, 0xbe, 0xa7, 0xc4, + 0xdb, 0x6c, 0xee, 0x7f, 0xf7, 0x34, 0xe0, 0x36, 0x8d, 0x07, 0xef, 0x85, 0xaf, 0xf2, 0xa2, 0x75, + 0xb7, 0x84, 0x7c, 0x1f, 0x6a, 0x98, 0x06, 0x32, 0x88, 0x8d, 0x6a, 0x2e, 0x14, 0xe8, 0x9f, 0xa6, + 0x9f, 0x18, 0x18, 0xeb, 0x75, 0xca, 0xae, 0xbc, 0x01, 0x55, 0x3f, 0x18, 0xea, 0x42, 0x6e, 0xf6, + 0xcb, 0x0f, 0x61, 0x4f, 0x4c, 0x93, 0x20, 0x9d, 0x9d, 0x0d, 0x42, 0xf4, 0xcf, 0xf3, 0xd4, 0xaa, + 0xbb, 0xab, 0xb9, 0x5e, 0x46, 0xf1, 0x26, 0x6c, 0x2b, 0x3c, 0x17, 0x65, 0xb0, 0x06, 0xfc, 0x01, + 0xd4, 0xb3, 0x84, 0x70, 0x84, 0xa4, 0x8c, 0xad, 0x36, 0xeb, 0xee, 0xb8, 0x4b, 0xe2, 0xe4, 0x1b, + 0x83, 0x6a, 0x9f, 0x24, 0x7f, 0x09, 0x77, 0x56, 0x1f, 0xc6, 0x5c, 0x3e, 0xfc, 0x7a, 0x4b, 0xb3, + 0xb3, 0x59, 0xbb, 0xb9, 0xc1, 0x0b, 0xd8, 0x5b, 0x59, 0x88, 0xd6, 0xca, 0x99, 0xbf, 0x25, 0xf3, + 0x70, 0xa3, 0x54, 0x4e, 0x33, 0xb7, 0x3f, 0x5c, 0x5f, 0x1c, 0xb1, 0xde, 0xf3, 0xcb, 0xb9, 0xc5, + 0xae, 0xe6, 0x16, 0xfb, 0x3d, 0xb7, 0xd8, 0xd7, 0x85, 0x55, 0xb9, 0x5a, 0x58, 0x95, 0x9f, 0x0b, + 0xab, 0xf2, 0xee, 0x91, 0x0c, 0xd4, 0x68, 0x3c, 0xb0, 0x7d, 0x8c, 0x1c, 0x8c, 0x09, 0xe3, 0xd4, + 0xc9, 0x3f, 0x53, 0x47, 0x2f, 0xad, 0x9a, 0x25, 0x82, 0x06, 0xb5, 0x7c, 0x61, 0x9f, 0xfc, 0x09, + 0x00, 0x00, 0xff, 0xff, 0x09, 0xf5, 0x5c, 0x1b, 0x31, 0x03, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // AllocateVault assembles a sqlite3 database in a local directory and returns + // the CID of the database. this operation is called by services initiating a + // controller registration. + AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) AllocateVault(ctx context.Context, in *MsgAllocateVault, opts ...grpc.CallOption) (*MsgAllocateVaultResponse, error) { + out := new(MsgAllocateVaultResponse) + err := c.cc.Invoke(ctx, "/vault.v1.Msg/AllocateVault", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/vault.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // AllocateVault assembles a sqlite3 database in a local directory and returns + // the CID of the database. this operation is called by services initiating a + // controller registration. + AllocateVault(context.Context, *MsgAllocateVault) (*MsgAllocateVaultResponse, error) + // UpdateParams defines a governance operation for updating the parameters. + // + // Since: cosmos-sdk 0.47 + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) AllocateVault(ctx context.Context, req *MsgAllocateVault) (*MsgAllocateVaultResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllocateVault not implemented") +} +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_AllocateVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAllocateVault) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AllocateVault(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vault.v1.Msg/AllocateVault", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AllocateVault(ctx, req.(*MsgAllocateVault)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vault.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "vault.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AllocateVault", + Handler: _Msg_AllocateVault_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "vault/v1/tx.proto", +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgAllocateVault) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAllocateVault) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAllocateVault) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Origin) > 0 { + i -= len(m.Origin) + copy(dAtA[i:], m.Origin) + i = encodeVarintTx(dAtA, i, uint64(len(m.Origin))) + i-- + dAtA[i] = 0x1a + } + if len(m.Subject) > 0 { + i -= len(m.Subject) + copy(dAtA[i:], m.Subject) + i = encodeVarintTx(dAtA, i, uint64(len(m.Subject))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgAllocateVaultResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAllocateVaultResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAllocateVaultResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Localhost { + i-- + if m.Localhost { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintTx(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0x1a + } + if m.ExpiryBlock != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.ExpiryBlock)) + i-- + dAtA[i] = 0x10 + } + if len(m.Cid) > 0 { + i -= len(m.Cid) + copy(dAtA[i:], m.Cid) + i = encodeVarintTx(dAtA, i, uint64(len(m.Cid))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgAllocateVault) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Subject) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Origin) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgAllocateVaultResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Cid) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.ExpiryBlock != 0 { + n += 1 + sovTx(uint64(m.ExpiryBlock)) + } + l = len(m.Token) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Localhost { + n += 2 + } + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAllocateVault) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subject = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Origin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAllocateVaultResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType) + } + m.ExpiryBlock = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExpiryBlock |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Localhost", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Localhost = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/vault/types/vault.go b/x/vault/types/vault.go new file mode 100644 index 000000000..ded1a50c4 --- /dev/null +++ b/x/vault/types/vault.go @@ -0,0 +1,22 @@ +package types + +import ( + "github.com/ipfs/boxo/files" + + "github.com/onsonr/sonr/config/dwn" + vault "github.com/onsonr/sonr/x/vault/internal" +) + +type Vault struct { + FS files.Node +} + +func NewVault(cnfg *dwn.Config, chainID string) (*Vault, error) { + fileMap, err := vault.NewVaultDirectory(cnfg) + if err != nil { + return nil, err + } + return &Vault{ + FS: fileMap, + }, nil +}